我正在开发原生Node.js插件和以下nan-docs
我把nan加入了binding.gyp类:"include_dirs" : [ "<!(node -e "require('nan')")" ]
nan也处于npm依赖关系中。
但是当我在另一个节点模块中安装包时,节点gyp失败,出现错误
> nnb@1.0.2 install /Users/Shopgate/sandbox/stress/node_modules/nnb
> node-gyp rebuild
module.js:338
throw err;
^
Error: Cannot find module 'nan'
at Function.Module._resolveFilename (module.js:336:15)
at Function.Module._load (module.js:278:25)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at [eval]:1:1
at Object.exports.runInThisContext (vm.js:74:17)
at Object.<anonymous> ([eval]-wrapper:6:22)
at Module._compile (module.js:460:26)
at evalScript (node.js:431:25)
at startup (node.js:90:7)
gyp: Call to 'node -e "require('nan')"' returned exit status 1. while trying to load binding.gyp
在我的案例中,这是因为package-lock
文件中缺少一些依赖项。我通过删除它并再次运行$ npm install
解决了这个问题。
全局安装nan
:
npm i -g nan
然后,
export NODE_PATH=$(npm root -g)
虽然不理想,但如果您先安装nan,它会起作用。
$ npm install nan
我在node.js版本v12.18.3和npm 6.14.6中遇到了这个错误。
升级到node.js版本v14.15.4(包括npm 6.14.10)解决了这个问题。npm install
在升级后成功运行。
不需要以任何方式安装nan
。
不幸的是,我遇到了这个问题,任何包含"npm"的内容都会立即返回并引发错误
module.js:471
throw err;
^
Error: Cannot find module 'number-is-nan'
at Function.Module._resolveFilename (module.js:469:15)
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/code-point-at/index.js:2:19)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
cd: no such file or directory: /npm
我不得不删除我的节点&npm文件
我遵循的卸载和重新安装指令在这里(stackoverflow):
如何完全卸载Node.js,并从一开始重新安装(Mac OS X)
然后,我在每一期都遵循兔子的路线!
不要在出现摩擦的第一个迹象时立即跳到SO(stackoverflow),命令窗口(cli)会"奇怪地"为你提供正确的答案(然而,我确实达到了我提到的SO的大约2个栏,主要是为了安全起见)。
- 在安装node、npm和&通过Homebrew安装Node.js和npm发出grunt
--我遇到了一些摩擦,因为python框架文件所在的位置让自制程序抛出了警告解决方案。
--我在这里写了一篇关于kegs链接的警告,解决了这个问题。
- 然后当我需要运行时:
brew install node
--我有另一个brew link issue
,很容易,因为我上面写的关于桶链接警告的内容只需要再次浏览一遍,所以我想。然后我收到一个错误,说我不能brew link --overwrite node
那个文件(如果我记得的话,特权或其他什么,在这里解决了)。
最后
就在这一点上,一切都很顺利。--记住!中间有一些简单的步骤,我实际上只是服从cli中的命令提示,例如:
brew希望我通过给定的路径删除文件:
--打开finder>[在MacBook"监视器工具栏"顶部]转到>转到文件夹…>复制&在cli window>中粘贴brew提供的路径,它会发现director/file,然后删除相应的目录/file
--继续这些步骤直到完全满足CCD_ 12。
正如我所说,最后一部分只是简单地直接遵循酿造反应的方向。
我希望这次演练能帮助人们更快地绕过我遇到的问题,并感谢社区花时间帮助我找到解决方案,我在这个答案中联系到了这些解决方案。
不要为泄露的代码哭泣,继续支持社区。
我参加聚会有点晚了。但对我来说有效的是使用rm -rf node_modules && npm install
重新安装所有node_modules