Node.js NPM完全忽略全局安装的软件包

Node.js NPM完全忽略全局安装的软件包,node.js,macos,npm,Node.js,Macos,Npm,我在本地安装软件包时遇到问题,因为在本地可以使用全局安装的软件包。include路径似乎有问题,但我不确定这是什么原因造成的 系统:Mac OS X 节点:8.3.1 净现值:5.0.4 npm列表的输出-g--depth=0 /usr/local/lib +-- node-gyp@3.6.2 +-- node-sass@4.5.3 +-- npm@5.0.4 `-- npm-check@5.4.4 当我试图安装时,它首先提到了节点gyp,它是全局安装的,与警告不同。在这之后,它会因节点sas

我在本地安装软件包时遇到问题,因为在本地可以使用全局安装的软件包。include路径似乎有问题,但我不确定这是什么原因造成的

系统:Mac OS X
节点:8.3.1
净现值:5.0.4

npm列表的输出-g--depth=0

/usr/local/lib
+-- node-gyp@3.6.2
+-- node-sass@4.5.3
+-- npm@5.0.4
`-- npm-check@5.4.4
当我试图安装时,它首先提到了
节点gyp
,它是全局安装的,与警告不同。在这之后,它会因
节点sass
而失败,该节点也是全局安装的

jurriendokter$ npm install
npm WARN prefer global node-gyp@3.6.1 should be installed with -g

> node-sass@4.5.2 install /Users/jurriendokter/Development/holland-toolkit/node_modules/node-sass
> node scripts/install.js

module.js:487
    throw err;
    ^

Error: Cannot find module 'extend'
    at Function.Module._resolveFilename (module.js:485:15)
    at Function.Module._load (module.js:437:25)
    at Module.require (module.js:513:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/jurriendokter/Development/holland-toolkit/node_modules/node-sass/node_modules/request/index.js:17:29)
    at Module._compile (module.js:569:30)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: node-sass@https://registry.npmjs.org/node-sass/-/node-sass-4.5.2.tgz (node_modules/node-sass):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: node-sass@4.5.2 install: `node scripts/install.js`
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

added 291 packages in 7.829s
jurriendokter$npm安装
npm警告首选全局节点-gyp@3.6.1应与-g一起安装
>节点-sass@4.5.2安装/Users/jurriendokter/Development/holland toolkit/node_modules/node sass
>节点脚本/install.js
module.js:487
犯错误;
^
错误:找不到模块“扩展”
位于Function.Module.\u解析文件名(Module.js:485:15)
在Function.Module.\u加载(Module.js:437:25)
at Module.require(Module.js:513:17)
根据需要(内部/module.js:11:18)
反对。(/Users/jurriendokter/Development/holland toolkit/node_modules/node sass/node_modules/request/index.js:17:29)
在模块处编译(Module.js:569:30)
在Object.Module.\u extensions..js(Module.js:580:10)
在Module.load(Module.js:503:32)
在tryModuleLoad时(module.js:466:12)
在Function.Module.\u加载(Module.js:458:3)
npm警告可选跳过可选依赖项:节点-sass@https://registry.npmjs.org/node-sass//-/node-sass-4.5.2.tgz(node_模块/node-sass):
npm警告可选跳过可选依赖项:节点-sass@4.5.2install:`node scripts/install.js`
npm警告可选跳过可选依赖项:退出状态1
在7.829中添加了291个软件包
我已经在mac osx上重新安装了node,检查了npm doctor和所有东西,但我完全不知所措


如何解决此问题?

我通过以下步骤解决了此问题

  • npm缓存清除-强制执行
  • rm-rf节点模块
  • rm package lock.json
  • npm安装
  • npm更新

请注意,这并不能解决警告:
npm WARN prefer global node-gyp@3.6.2应与-g一起安装,但它允许我再次安装和运行脚本。

我通过以下过程解决了此问题

  • npm缓存清除-强制执行
  • rm-rf节点模块
  • rm package lock.json
  • npm安装
  • npm更新

请注意,这并不能解决警告:
npm WARN prefer global node-gyp@3.6.2应使用-g安装
,但它允许我再次安装和运行脚本。

我发现,如果您以前使用较旧的NPM版本(3或4)安装软件包,然后使用较新的版本(5)安装软件包,后者可能会感到困惑。本地包和全局包都会发生这种情况。通常通过强制安装新软件包来修复(
npmi--force…
)。我认为
node-gyp
警告与它被声明为
node-sass
的依赖项有关,因此
npm I-node-sass
将(也)安装它的本地版本,这可能触发警告(因为
node-gyp
package.json
中设置了
preferGlobal
).我的情况很可能就是这样。从文件系统中删除
package lock.json
,也会将每次安装视为一次新安装(或强制安装),因此这也有帮助。我发现,如果您安装不同的版本,但不使用
--save
并因此更新
package lock.json
,它将从
package lock.json
安装版本,而不是在
package.json
中设置的版本。我发现,如果您以前安装的包使用较旧的NPM版本(3或4),然后使用更新的版本(5)安装软件包,后者可能会感到困惑。本地包和全局包都会发生这种情况。通常通过强制安装新软件包来修复(
npmi--force…
)。我认为
node-gyp
警告与它被声明为
node-sass
的依赖项有关,因此
npm I-node-sass
将(也)安装它的本地版本,这可能触发警告(因为
node-gyp
package.json
中设置了
preferGlobal
).我的情况很可能就是这样。从文件系统中删除
package lock.json
,也会将每次安装视为一次新安装(或强制安装),因此这也有帮助。我发现,如果您安装不同的版本,但不使用
--save
并因此更新
package lock.json
,它将从
package lock.json
安装版本,而不是在
package.json
中设置的版本