“npm install”和“npm rebuild”的区别是什么?

49

我将我的node版本从v7.1.0升级到v9.4.0。然后,当我尝试运行我的服务器时,我得到了这个错误信息。

was compiled against a different Node.js version using
NODE_MODULE_VERSION 51. This version of Node.js requires
NODE_MODULE_VERSION 59. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).

然后我了解到npm rebuild。 我运行了npm rebuildnpm install两个命令。 运行npm rebuild后问题得到了解决,但我不理解它的作用。

请解释一下npm rebuild是什么。

谢谢。

1个回答

72

npm install: 很明显,npm install用于使用package.json文件安装软件包,此命令还会安装依赖于(package.json中)这些软件包的其他软件包。 在后台,此命令使用npm build帮助构建您正在安装的软件包。

npm rebuild: 顾名思义,此命令重新构建软件包,只有在升级节点版本并需要使用新的二进制重新编译所有C++附加组件时才使用。


7
请注意,然而,如果可选依赖项无法构建,则“npm install”将成功,但“npm rebuild”会在第一次失败后停止。这将导致其余的包不会被重新构建。一个例子是ripe@0.2.1,它最终依赖于utf-8-validate@1.2.2,后者在我的机器上构建失败。但是,尽管如此,这是一个可选的依赖关系,所以“npm i”成功了。 - x-yuri
1
另外,如果您使用npm-5.x并且存在package-lock.json,那么很可能npm rebuild不足以解决问题。package-lock.json没有被尊重,因此您不仅需要重新构建二进制文件,还要确保按照package-lock.json安装软件包。npm rebuild只会重新构建已安装的内容。npm i可以处理后者。另一方面,如果软件包版本没有更改,则仍然需要重新构建它。因此,您可能需要两者都使用。 - x-yuri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接