35

我正在开发本机 Node.js 插件并关注nan 文档

我将 nan 包含在 binding.gyp 中,例如: "include_dirs" : [ "<!(node -e \"require('nan')\")" ]

nan 也在 npm 依赖项中。

但是当我在另一个节点模块中安装包时 node-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
4

6 回答 6

69

就我而言,这是因为文件中缺少一些依赖项package-lock。我通过删除它并$ npm install再次运行来解决它。

于 2020-03-25T16:55:39.097 回答
32

nan全局 安装:

npm i -g nan

接着,

export NODE_PATH=$(npm root -g)

于 2018-11-29T11:34:48.323 回答
18

不理想,但如果你先安装 nan 就可以了。

$ npm install nan
于 2016-02-06T18:17:16.573 回答
8

我在 node.js 版本 v12.18.3 和 npm 6.14.6 中遇到了这个确切的错误。

升级到 node.js 版本 v14.15.4(包括 npm 6.14.10)解决了这个问题。npm install升级后运行成功。

无需以nan任何方式安装。

于 2021-01-11T10:47:25.443 回答
0

不幸的是,我遇到了这个问题,其中包含“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 个障碍,主要是为了安全起见)。

- 我遇到了一些摩擦,因为 python 框架文件位于使自制软件抛出警告解决的地方。

- 和一个小桶链接警告解决了我自己在这里写的

  • 然后当我需要运行时:brew install node

- 我有另一个brew link issue,很简单,因为我上面关于小桶链接警告的文章只需要再次遍历,所以我想。然后我收到一条错误消息,说我不能brew link --overwrite node使用该文件(特权或其他东西,如果我记得的话,在这里仍然可以解决)。

最后

  • 正是在这一点上,一切都运作良好。 - 记住!中间有一些简单的步骤,我实际上只是按照 cli 中的命令提示进行操作,例如:

  • brew 希望我通过给定路径删除文件:

--打开 finder> [在 MacBook“监视器工具栏”顶部] 转到>转到文件夹...>在 cli 窗口中复制并粘贴 brew 提供的路径>它将找到该目录/文件然后删除适当的目录/文件

-- 继续这些步骤,直到brew update完全满意为止。

  • 正如我所说,这最后一部分只是简单地直接遵循 brew 响应的指示。

  • 我希望本演练可以帮助某人更快地绕过我遇到的问题,并感谢社区花时间帮助我解决我在此答案中链接到的解决方案。

  • 不要为溢出的代码哭泣,继续支持社区。

于 2017-11-12T21:34:09.123 回答
0

我参加聚会有点晚了。但对我有用的是重新安装所有node_modules使用rm -rf node_modules && npm install

于 2018-08-28T16:25:02.803 回答