package.json 中的节点引擎 8.x 或 10.x

Posted

技术标签:

【中文标题】package.json 中的节点引擎 8.x 或 10.x【英文标题】:Node engine 8.x or 10.x in package.json 【发布时间】:2019-01-06 19:57:36 【问题描述】:

我尝试在 package.json 中指定节点引擎以同时接受 810 版本。

我试着输入这个:

"engines": 
  "node": "8.x|10.x"
,

但运行 yarn 会导致:

引擎“节点”与此模块不兼容。预期版本“8.x|10.x”

如果我替换为:

"engines": 
  "node": "10.x"
,

...它可以工作(即没有错误)。

有没有办法在package.json 中接受两个版本的节点引擎?

【问题讨论】:

【参考方案1】:

请参阅the documentation,其中包含示例。

提供带有大于/小于符号的以空格分隔的引擎列表。

 
  "engines" :  
    "node" : ">=8.0.0 <11.0.0" 
  

【讨论】:

因为这包括了请求的节点版本,所以它是完全错误的,但它并不能解决实际问题,因为它还包括所有 9.x,这似乎是这里的实际问题?跨度> 如果您有两个像这里显示的约束...阅读“大于 8 且小于 11”,您可以使用空格。如果你想有多个变体,你必须使用||【参考方案2】:

您只需要双管 || 而不是单管。

"engines": 
  "node": "^8 || ^10"

将匹配 v8.x.x 或 v10.x.x 但 v9。

您可以在此处阅读更多信息https://docs.npmjs.com/files/package.json#dependencies

【讨论】:

以上是关于package.json 中的节点引擎 8.x 或 10.x的主要内容,如果未能解决你的问题,请参考以下文章

我的节点 package.json 中的 cores 和 cors 有啥区别?

Docker 错误:没有这样的文件或目录,打开 '/package.json'

节点 package.json “bin” 值,命令不起作用

package.json中的“private”:true或“private”:false是啥意思[重复]

Elastic Beanstalk / Docker - 没有这样的文件或目录 package.json

节点使用 package.json 文件吗?