我是 Node 的新手,但遇到了一个奇怪的问题。让我概述一下我的步骤:
- 安装一个具有
fabric
依赖项的项目,该依赖项又依赖于一个名为contextify
的旧包。该项目还使用node-gyp
来安装附加组件。 - 运行
npm install
,失败并显示:
contextify@0.1.15 install /path/to/project/node_modules/contextify node-gyp rebuild CXX(target) Release/obj.target/contextify/src/contextify.o .... ../src/contextify.cc:150:16: error: no member named 'SetAccessCheckCallbacks' in 'v8::ObjectTemplate' otmpl->SetAccessCheckCallbacks(GlobalPropertyNamedAccessCheck, ~~~~~ ^ ...
- 谷歌搜索
otmpl->SetAccessCheckCallbacks(GlobalPropertyNamedAccessCheck,
给出了一些链接(node-gyp,fabric),清楚地表明这是 Node 版本的一个已知问题。我有 Node 7.4,并且这需要 Node 6 或更早版本。 - 我意识到该项目实际上并未使用
fabric
,因此我从我的package.json
中删除了依赖项 - 我删除了我的
node_modules
文件夹,然后再次运行npm install
。同样的错误。
现在出现了奇怪的部分:npm install
(调用 node-gyp rebuild
)一直在尝试构建 contextify,即使我可以证明它不再依赖于项目中的任何内容!
我尝试过的:
- 删除我的 Node 缓存,如
npm config get cache
的输出(即rm -rf ~/.npm
) - 卸载并重新安装
node-gyp
- 尝试寻找这个包可能潜伏在某种半安装状态的地方,例如
/usr/local/lib/node_modules
这些似乎都不起作用。有什么线索可以阻止 npm
和 node-gyp
尝试安装这个包吗?我愿意完全放弃我的 node/npm/node-gyp 设置并从头开始重新安装,但不太确定如何正确地做到这一点。
最佳答案
尝试将 Node 版本降级到 6
npm install node@6
关于json - 即使从 package.json 中删除它,node-gyp 也会尝试建立依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41947693/