当前位置: 首页 > 知识库问答 >
问题:

如何指定所需的节点。包中的js版本。json?

谭志用
2023-03-14

我有一个Node.js项目,需要节点版本12或更高。有没有办法在packages.json文件中指定这一点,以便安装程序自动检查并通知用户是否需要升级?

共有3个答案

越俊艾
2023-03-14

正如Ibam所说,enginestrect现在已不推荐使用。但我找到了这个解决方案:

检查版本。js:

import semver from 'semver';
import { engines } from './package';

const version = engines.node;
if (!semver.satisfies(process.version, version)) {
  console.log(`Required node version ${version} not satisfied with current version ${process.version}.`);
  process.exit(1);
}

包裹json:

{
  "name": "my package",
  "engines": {
    "node": ">=50.9" // intentionally so big version number
  },
  "scripts": {
    "requirements-check": "babel-node check-version.js",
    "postinstall": "npm run requirements-check"
  }
}

在这里了解更多信息:https://medium.com/@adambisek/how-to-check-最低要求-node-js-version-4a78a8855a0f#.3oslqmig4

.nvmrc

还有一件事。“点文件”。nvmrc'可用于要求特定节点版本-https://github.com/creationix/nvm#nvmrc

但是,它只受到npm脚本(和纱线脚本)的尊重。

薄伟彦
2023-03-14

将以下内容添加到package.json

  "engines": {
    "npm": ">=6.0.0",
    "node": ">=10.0.0"
  },

将以下内容添加到. npmrc(与package.json相同的目录):

engine-strict=true
严曜文
2023-03-14

我认为您可以使用“引擎”字段:

{ "engines" : { "node" : ">=0.12" } }

正如您所说,您的代码肯定无法与任何较低版本一起使用,您可能也需要“EngineStrct”标志:

{ "engineStrict" : true }

package.json文件的文档可以在npmjs站点上找到

使现代化

现在已弃用,因此这只会给出警告。现在,如果用户想要运行npm config set Engine-严格的true,这就取决于用户了。

更新2

正如ben在下面指出的,创建一个。如果节点版本不兼容,则项目根目录下的npmrc文件(与package.json文件的级别相同),文本为engine strict=true将在安装过程中强制出错。

 类似资料:
  • 问题内容: 我有一个需要节点版本12或更高版本的Node.js项目。有没有办法在packages.json文件中指定此名称,以便安装程序将自动检查并通知用户是否需要升级? 问题答案: 我认为您可以使用“引擎”字段: 正如您所说的那样,您的代码绝对不能与任何较低版本一起使用,您可能也希望“ engineStrict”标志: 可在npmjs网站上找到package.json文件的文档 更新资料 现在已

  • 问题内容: VS Code是否可以使用NVM指定的节点版本? 我在本地安装了6.9.2。即使从OS X终端(不是VS Code终端)切换到另一个版本后,重新启动VS Code,VS Code仍会使用6.9.2显示。 OS X终端 VS Code终端 问题答案: 解决方法是设置别名。在OS终端中运行- 打开vscode,现在运行返回 似乎vscode占用了此(别名默认值)值,而不是由设置的节点版本

  • VS代码是否可以使用NVM指定的节点版本? 我在本地安装了6.9.2。即使切换到另一个版本后,从OS X终端(不是VS Code终端),重新启动VS Code,VS Code仍然显示使用6.9.2。 OSX终端 VS代码终端

  • 当我更新(和测试)应用程序中的特定页面时,我需要停止服务器,重新启动,切换到浏览器窗口,点击F5并切换回终端以查看输出。这需要很多时间……) 有没有一种方法可以从如下内容开始: 所以我可以直接看到输出,就像有人从他们的浏览器点击页面一样? 我发现了这个问题,但我想它包含在服务器代码中,所以每次都需要更新。这是一个解决方案,但我想知道是否有更快的方法来做到这一点。 谢谢 对于curl,我得到了这个错

  • 我必须在JavaSelenium应用程序中解析此元素: 我想得到一个包含所有5个孩子的列表,包括文本。当我使用WebElement中的任何选择器(xpath、cssSelector)时,它只返回4个非文本元素。有人知道怎么做吗?我是硒的新手,以前从未使用过。谢谢

  • 问题内容: 我想将Node版本从最新版本降级到。 但是到目前为止,没有任何效果。尝试了NVM,并且通过说未找到make命令也给出了错误。如何降级Node? 问题答案: 您可以将其用于节点的版本管理。有一个简单的介绍。 这是非常容易使用。 然后您可以显示您的节点版本: 对于Windows,nvm是一个受欢迎的工具。