Linux 安装nrm报错 require() of ES modules is not supported

135 阅读1分钟

安装了 NodeJS最新LTS 版本 18.6.0,安装最新的 NPM 版本 9.5.0,之后再安装 nrm 报错:

[root@AirFort ~]# nrm -V
/usr/lib/node_modules/nrm/cli.js:9
const open = require('open');
             ^

Error [ERR_REQUIRE_ESM]: require() of ES Module /usr/lib/node_modules/nrm/node_modules/open/index.js from /usr/lib/node_modules/nrm/cli.js not supported.
Instead change the require of index.js in /usr/lib/node_modules/nrm/cli.js to a dynamic import() which is available in all CommonJS modules.
    at Object.<anonymous> (/usr/lib/node_modules/nrm/cli.js:9:14) {
  code: 'ERR_REQUIRE_ESM'
}

Node.js v18.16.0

原因:应使用 open 的 CommonJs 规范包,现在 open v9.0.0 是 ESModule版本的包。
解决方法:
1.卸载当前依赖包

npm uninstall nrm

2.重新安装

npm install -g nrm open@8.4.2 --save