我正在开发原生Node.js插件,并遵循nan文档
我把nan包括到binding.gyp中,比如:"include_dirs" : [ "<!(node -e \"require('nan')\")" ]
nan也在npm依赖中。
但是当我在另一个节点模块中安装包时,node-gyp失败并出错
> [email protected] 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
7条答案
按热度按时间kmynzznz1#
在我的例子中,这是因为
package-lock
文件中缺少一些依赖项。我通过删除它并再次运行$ npm install
解决了这个问题。n6lpvg4x2#
全局安装
nan
:npm i -g nan
然后
export NODE_PATH=$(npm root -g)
vjrehmav3#
不理想,但如果你先安装nan,它就可以工作。
093gszye4#
我在node.js v12.18.3和npm 6.14.6版本中遇到了这个错误。
升级到node.js v14.15.4(包括npm 6.14.10)解决了这个问题。
npm install
在升级后成功运行。不需要以任何方式安装
nan
。tvokkenx5#
不幸的是,我遇到了这个问题,任何包含'npm'的内容都会立即返回并抛出错误。
我不得不删除我的node & npm文件
我遵循的卸载和重新安装说明在这里(stackoverflow):
How do I completely uninstall Node.js, and reinstall from beginning (Mac OS X)
然后我跟着兔子的足迹一路穿过每一个问题!
不要在出现摩擦的第一个迹象时立即跳到SO(stackoverflow),命令窗口将“奇怪地”为您提供正确的答案(然而,我确实遇到了我提到SO的两个障碍,主要是为了安全起见)。
--我遇到了一些摩擦,一个python框架文件在一个地方,使homebrew抛出一个警告resolve with。
--和一个小桶链接警告resolved with my own write up here。
brew install node
--我有另一个
brew link issue
,很容易,因为我上面写的小桶链接警告只需要再走一遍,所以我想。然后,我得到一个错误,说我不能brew link --overwrite node
该文件(特权或东西,如果我记得,没有少resolved here)。终于
-- * 打开查找器> [在MacBook“监视器工具栏”顶部]转到>转到文件夹.>复制并粘贴brew提供的路径在Windows中>它会找到该导演/文件,然后删除相应的目录/文件 *
--继续这些步骤,直到
brew update
完全满足。watbbzwu6#
我参加派对要迟到了。但对我来说,最有效的方法是使用
rm -rf node_modules && npm install
重新安装所有node_modules
0wi1tuuw7#
如果我用Yarn的话,