即使从 package.json 中删除,node-gyp 也会尝试构建依赖项
Posted
技术标签:
【中文标题】即使从 package.json 中删除,node-gyp 也会尝试构建依赖项【英文标题】:node-gyp tries to build dependency even after removing it from package.json 【发布时间】:2017-06-16 07:20:42 【问题描述】:我是 node 新手,但遇到了一个奇怪的问题。让我概述一下我的步骤:
-
安装一个具有
fabric
依赖项的项目,该依赖项又依赖于一个名为contextify
的旧包。该项目还使用node-gyp
来安装插件。
运行npm install
,失败并显示:
-
谷歌搜索
otmpl->SetAccessCheckCallbacks(GlobalPropertyNamedAccessCheck,
提供了一些链接(node-gyp、fabric),这些链接清楚地表明这是节点版本的一个已知问题。我有节点 7.4,这需要节点 6 或更早版本。
我意识到fabric
并没有被这个项目实际使用,所以我从我的package.json
中删除了依赖项
我删除了我的node_modules
文件夹,然后再次运行npm install
。同样的错误。
现在出现了奇怪的部分:npm install
(它调用node-gyp rebuild
)一直在尝试构建 contextify,尽管我可以证明它不再依赖于项目中的任何内容!
我尝试了什么:
删除我的节点缓存,由npm config get cache
输出(即rm -rf ~/.npm
)
卸载并重新安装node-gyp
试图寻找这个包可能潜伏在一些半安装状态的地方,例如/usr/local/lib/node_modules
这些似乎都不起作用。有什么线索可以阻止npm
和node-gyp
尝试安装此软件包吗?我愿意完全放弃我的 node/npm/node-gyp 设置并从头开始重新安装,但不太确定如何正确执行此操作。
【问题讨论】:
万一有人遇到这个问题,我解决了这个问题。我认为问题在于node
是通过 Homebrew 安装的。我最终的“解决方案”是从我的机器上卸载所有版本的节点。重新安装 nvm(不使用 brew)并使用 nvm 安装节点 6.9.4。全局安装 node-gyp。使用它来构建我的项目,此时它仍然构建了 contextify,但成功了,因为它是节点 6。然后我厌倦了这个问题并继续工作,最终包消失了。似乎是缓存问题。
嘿@JeremyKun 感谢您的提示。我通过恢复到节点 6.10.2 解决了这个问题。顺便说一句,您是否尝试过吹走整个 node_modules 并重新安装新的 npm?
是的,我试过了,但没有帮助。
【参考方案1】:
尝试将节点版本降级到6
npm install node@6
【讨论】:
来自评论:这看起来更像是评论,你能把它移到那里吗?以上是关于即使从 package.json 中删除,node-gyp 也会尝试构建依赖项的主要内容,如果未能解决你的问题,请参考以下文章
如果 `redux` 不在 package.json 或 package-lock.json 或 node_modules 中,为啥从 'redux' 导入任何东西仍然有效?
在 Node.js 中,模块如何从应用程序的 package.json 中获取数据?
我可以从 package-lock.json 重新创建 node_modules 吗?
在 node package.json 中,使用额外参数从另一个脚本调用脚本,在这种情况下添加 mocha watcher
从命令行运行 `node index.js` 可以,但是当我在 package.json 中使用启动脚本时,我得到一个 EADDRINUSE /usr/bin/local/node 错误