【问题标题】:node-gyp tries to build dependency even after removing it from package.json即使从 package.json 中删除,node-gyp 也会尝试构建依赖项
【发布时间】:2017-06-16 07:20:42
【问题描述】:

我是 node 新手,但遇到了一个奇怪的问题。让我概述一下我的步骤:

  1. 安装一个具有fabric 依赖项的项目,该依赖项又依赖于一个名为contextify 的旧包。该项目还使用node-gyp 来安装插件。
  2. 运行npm install,失败并显示:
contextify@0.1.15 安装 /path/to/project/node_modules/contextify 节点gyp重建 CXX(target) 发布/obj.target/contextify/src/contextify.o …… ../src/contextify.cc:150:16:错误:'v8::ObjectTemplate'中没有名为'SetAccessCheckCallbacks'的成员 otmpl->SetAccessCheckCallbacks(GlobalPropertyNamedAccessCheck, ~~~~~ ^ ...
  1. 谷歌搜索otmpl->SetAccessCheckCallbacks(GlobalPropertyNamedAccessCheck, 提供了一些链接(node-gypfabric),这些链接清楚地表明这是节点版本的一个已知问题。我有节点 7.4,这需要节点 6 或更早版本。
  2. 我意识到fabric 并没有被这个项目实际使用,所以我从我的package.json 中删除了依赖项
  3. 我删除了我的node_modules 文件夹,然后再次运行npm install。同样的错误。

现在出现了奇怪的部分:npm install(它调用node-gyp rebuild)一直在尝试构建 contextify,尽管我可以证明它不再依赖于项目中的任何内容!

我尝试了什么:

  • 删除我的节点缓存,由npm config get cache 输出(即rm -rf ~/.npm
  • 卸载并重新安装node-gyp
  • 试图寻找这个包可能潜伏在一些半安装状态的地方,例如/usr/local/lib/node_modules

这些似乎都不起作用。有什么线索可以阻止npmnode-gyp 尝试安装此软件包吗?我愿意完全放弃我的 node/npm/node-gyp 设置并从头开始重新安装,但不太确定如何正确执行此操作。

【问题讨论】:

  • 万一有人遇到这个问题,我解决了这个问题。我认为问题在于node 是通过 Homebrew 安装的。我最终的“解决方案”是从我的机器上卸载所有版本的节点。重新安装 nvm(不使用 brew)并使用 nvm 安装节点 6.9.4。全局安装 node-gyp。使用它来构建我的项目,此时它仍然构建了 contextify,但成功了,因为它是节点 6。然后我厌倦了这个问题并继续工作,最终包消失了。似乎是缓存问题。
  • 嘿@JeremyKun 感谢您的提示。我通过恢复到节点 6.10.2 解决了这个问题。顺便说一句,您是否尝试过吹走整个 node_modules 并重新安装新的 npm?
  • 是的,我试过了,但没有帮助。

标签: json node.js npm-install node-gyp


【解决方案1】:

尝试将节点版本降级到6

npm install node@6

【讨论】:

  • 来自评论:这看起来更像是评论,你能把它移到那里吗?
猜你喜欢
  • 2014-03-04
  • 2015-06-28
  • 2014-02-21
  • 2020-11-30
  • 2013-10-25
  • 1970-01-01
  • 2019-08-01
  • 2019-09-01
  • 1970-01-01
相关资源
最近更新 更多