npm install,-force标志

24

我正在为NodeJS后端安装包,然后遇到了以下错误:

"gyp.js" rebuild gyp ERR! configure error gyp ERR! stack Error: 找不到Python可执行文件“python”,您可以设置PYTHON环境变量。

它说我需要一些Python可执行文件。但是当我运行以下命令时:

npm i -force

一切安装似乎都运行良好。

问题:

  1. npm i -force 与普通的 npm i 有何不同?
  2. 这种方法可能会导致未来出现什么问题吗?

1
“-f”或“--force”参数将强制npm获取远程资源,即使磁盘上存在本地副本。 - Liam
好的,但我仍然困惑为什么这会有助于解决gyp.js问题。 - Willem van der Veen
你的第一个问题是 npm i -force 和普通的 npm i 有什么不同?。这在文档中已经涵盖了。在回答中重申这个事实没有太多意义。 - Liam
3个回答

24

就像Liam所提到的,-force参数"强制"npm重新下载所有包并再次安装。这可能会引起问题,因为如果您有太多的包,每次下载它们需要更多的时间。

对于关于gyp.js的具体问题,据我所知,node-gyp会在$HOME目录中下载一些东西,我猜测您的路径中有一些空格。一些工具无法处理路径中的空格,这就是为什么它无法找到可执行文件的原因。

其他可能的解决方案:

  • 删除$HOME/.node_gyp文件夹并运行npm update

  • 安装libkrb5-dev软件包sudo apt-get install libkrb5-dev

  • 安装build-essential软件包sudo apt-get install build-essential


4
我发现,如果你在依赖项中使用git #分支,那么...
npm i -f 

无法工作。我必须改回默认的主题,然后再改回来。

"dependencies": {
    "@custom-dependancy/one-framework": "git+ssh://git@github.com/Custom-Dependancy/one-framework.git#mybranch"

对我来说 - 分支更改意外失败了.. 移除依赖项 - 安装 - 和还原 - 然后再次安装解决了问题。 - Yitzchak

0
自 Node 版本 16 开始,“npm i” 严格考虑所有软件包的对等依赖关系。这意味着,如果您的某个软件包定义了类似以下内容的东西:
"lodash-es": ">=4.17.21"

在package.json中,你和所有其他的包都必须遵守这个规则。否则你的应用将无法成功构建。
但有时候(在本地开发期间),调用"npm i --force"仍然很方便,所有的包都会被下载,忽略那些peer dependencies。但你应该知道,这并不能保证一个包会正确工作,如果安装了不兼容的版本。

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