node-gyp尝试在从package.json中删除它之后构建依赖项

Jer*_*Kun 6 json node.js node-gyp npm-install

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

  1. 安装一个具有fabric依赖项的项目,该项依赖项依赖于一个名为的旧包contextify.该项目还用于node-gyp安装附加组件.
  2. 运行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,
        ~~~~~  ^
...
  1. 谷歌搜索otmpl->SetAccessCheckCallbacks(GlobalPropertyNamedAccessCheck,提供了一些链接(node-gyp,fabric),这清楚地表明这是节点版本的已知问题.我有节点7.4,这需要节点6或更早.
  2. 我意识到fabric这个项目实际上并没有使用,所以我删除了我的依赖项package.json
  3. 我删除了我的node_modules文件夹,然后npm install再次运行.同样的错误.

现在出现了奇怪的部分:( npm install调用node-gyp rebuild)继续尝试构建上下文,尽管我可以证明它不再是项目中任何东西的依赖!

我尝试了什么:

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

这些似乎都不起作用.任何线索我可以做什么来阻止npmnode-gyp尝试安装这个包?我愿意完全吹掉我的node/npm/node-gyp设置并从头开始重新安装,但不太确定如何正确地做到这一点.

小智 0

尝试将节点版本降级到6

npm install node@6
Run Code Online (Sandbox Code Playgroud)