如何确定项目/应用程序需要哪个版本的Node

12

我经常在GitHub上浏览,找到一些很棒的Node项目,喜欢拿来玩。唯一的问题是,大多数项目几乎没有文档。首先,我需要使用哪个版本的Node才能运行这个项目或应用程序。我使用 nvm 可以轻松地在不同版本之间切换,但不知道需要哪个版本有点令人沮丧。

是否有一种特定的方法,可能通过查看源代码,告诉我需要使用哪个版本的Node来安装/运行应用程序?


你是否遇到过不兼容版本的问题?通常情况下,如果你自己运行它,这应该不是一个问题。nvm 的作用是确保在多个平台上使用相同的 Node 版本,例如在团队开发时。除此之外,我想 package.json 中的包知道依赖关系并安装所需的内容。 - mchl18
Nodejs使用JavaScript,安装最新版本的nodejs应该与任何项目兼容。除非项目使用一些过时或弃用的模块。 - Michael Seltene
我的团队最近接手了一堆旧应用,这些应用很久没有升级,同时需要不同版本的节点。当我们第一次打开一个项目时,遇到了模块错误。我们不得不搜索错误,最终链接将带我们到gitbub,然后我们发现为什么特定的模块失败以及该应用程序需要哪个节点版本。 - fluidguid
2个回答

7
在你的 package.json 文件中,使用 engines
例如:
{
    "engines": {
        "node": ">=0.10.3 <0.12"
    }
}

它不会自动安装Node.js版本,但是它会警告错误的版本或开发人员可以看到所需的版本。

1
并非每个人都使用引擎,因此如果您从Github下载应用程序,或者在团队中继承项目,找出@amy正在询问的内容确实需要时间。 - fluidguid

2

使用npm install --dry-run命令可以告诉您当前的引擎是否被支持。

在某些情况下,它会选择依赖于特定引擎的软件包,并显示一个有用的警告,告诉您要使用哪个版本。例如:

╰─ npm i --dry-run                                                                                               ─╯
npm WARN old lockfile
npm WARN old lockfile The package-lock.json file was created with an old version of npm,
npm WARN old lockfile so supplemental metadata must be fetched from the registry.
npm WARN old lockfile
npm WARN old lockfile This is a one-time fix-up, please be patient...
npm WARN old lockfile
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: 'newrelic@5.13.1',
npm WARN EBADENGINE   required: { node: '>=6.0.0 <13.0.0', npm: '>=3.0.0' },
npm WARN EBADENGINE   current: { node: 'v14.17.1', npm: '8.1.3' }
npm WARN EBADENGINE }

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