npm运行项目时报错 internal/process/esm_loader.js:74 及 nvm下载其余版本报错 Download failed. Rolling Back.

背景:更换电脑所产生的这篇平平无奇的 node (1.1.12 版本) 踩坑日常,是将这次遇到的所有问题综合了一下所产出,可酌情查看是否有所碰到的问题~

  1. npm 运行报错
    在跑项目时,报以下错误,通过最基础的清空node_modulespackage-lock.json,并反复 install 依旧未解决问题。
internal/process/esm_loader.js:74
    internalBinding('errors').triggerUncaughtException(
                              ^

Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only file and data URLs are supported by the default ESM loader. Received protocol 'node:'
    at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:782:11)
    at Loader.resolve (internal/modules/esm/loader.js:85:40)
    at Loader.getModuleJob (internal/modules/esm/loader.js:229:28)
    at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:51:40)
    at link (internal/modules/esm/module_job.js:50:36) {
  code: 'ERR_UNSUPPORTED_ESM_URL_SCHEME'
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! ruoyi@3.8.4 serve:dev: `vite`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the ruoyi@3.8.4 serve:dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

在install过程中,发现为node版本过低:

[2/4] Fetching packages...
error @vitejs/plugin-vue@3.1.0: The engine "node" is incompatible with this module. Expected version "^14.18.0 || >=16.0.0". Got "14.13.0"
error Found incompatible module.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

于是采用nvm更换node版本。

// 查看已安装的node版本
nvm list

// 安装指定的node版本
nvm install 版本号

//使用/切换你需要的版本(这个命令在有些电脑环境下需要用管理员方式才能生效)
nvm use 版本号

若可正常切换的,可忽略下文,应该就已经可以正常运行项目了。

  1. 通过nvm下载其余版本时报错
User
Downloading node.js version 14.18.0 (64-bit)... 
Download failed. Rolling Back.
Rollback failed. remove D:\nvm\v14.18.0\node64.exe: The process cannot access the file because it is being used by another process.
Could not download node.js v14.18.0 64-bit executable.

通过翻阅博客及咨询gpt,发现为nvm版本问题,于是更换nvm版本。

2.1 替换 nvm 版本为 1.1.12

# 开启与关闭nvm(目前不清楚这一步有没有用,解决问题时,走了这一步,
# 也导致后续出现没有开启nvm下载不了node的问题)
nvm off

# 查看已有版本
nvm ls

# 依次卸载
nvm uninstall 版本号

# 可再次查看已有版本,查看是否为空
nvm ls

在找到对应nvm的下载目录(最起初安装nvm时的安装目录),将nvm整个文件夹删除删掉。以下框住的是我所安装的node版本,执行卸载完后应不会有node版本文件夹,若有 继续卸载。

1.1.12版本nvm文件夹
通过官网再下载最新版本 nvm(nvm官网链接

nvm官网链接
点击下载后,根据提示依次执行,安装 nvm。
安装步骤当时我参考了这篇博客(nvm安装教程),可以借鉴一下。

重新安装完nvm后,我开始安装node版本,发现连接超时,通过nvm on开启也依旧超时

# 安装node
nvm install <对应版本>

# 开启nvm
nvm on
Could not retrieve https://nodejs.org/dist/latest/SHASUMS256.txt.   

Get "https://nodejs.org/dist/latest/SHASUMS256.txt": net/http: TLS handshake timeout

通过翻阅博客及所安装的 nvm 的配置文件,发现并未添加国内镜像。

配置文件配置文件内容
需在 setting.txt 文件中配置上国内镜像。

node_mirror:npm.taobao.org/mirrors/node/
npm_mirror:npm.taobao.org/mirrors/npm/

新增国内镜像
至此,就可以正常安装node并运行项目啦,撒花~

<think>好的,我现在需要解决用户提到的Node.js中的ERR_UNKNOWN_FILE_EXTENSION错误。首先,我得回忆一下这个错误通常是在什么情况下出现的。根据之前的经验,这个错误通常发生在Node.js无法识别文件扩展名的候,尤其是在使用ES模块(ESM,比如导入TypeScript(.ts)文件或者JSON文件没有正确配置。 用户提到他们参考了站内的一个解决方案,涉及在vite.config.ts中导入package.json,但使用ts-node运行的脚本不行,后来通过添加assert和修改启动命令解决了。现在用户遇到同样类型的错误,可能是在其他脚本或配置中遇到了类似的问题,比如element-theme-replace这个工具可能涉及文件导入的问题。 首先,我需要确认ERR_UNKNOWN_FILE_EXTENSION的具体原因。根据Node.js的文档,当尝试导入一个未知扩展名的文件,并且没有相应的加载器处理,会抛出这个错误。例如,默认情况下Node.js不认识.ts文件,除非使用像ts-node这样的工具,并且启用了相应的模块加载器。 接下来,用户可能是在运行某些脚本没有正确配置Node.js的模块加载选项。例如,用户可能在运行TypeScript文件没有使用--loader ts-node/esm,或者没有启用实验性的JSON模块支持。此外,如果项目中使用了路径别名,可能需要额外的配置来解析这些别名,否则Node.js无法正确找到模块路径,导致扩展名无法识别。 然后,我需要考虑用户的Node.js版本是否过低。因为有些实验性功能如JSON模块导入需要较高版本Node.js,或者需要特定的命令行标志,如--experimental-json-modules。如果用户的Node版本较低,可能需要升级,或者调整启动命令来启用这些实验性功能。 另外,用户提到的element-theme-replace可能与主题替换相关,可能涉及到处理.scss、.css或者其他前端资源文件。这些文件在Node.js环境中默认不被识别,因此需要相应的加载器或转换器,比如使用适当的构建工具或配置相应的loader来处理这些文件类型。 可能的解决方案包括: 1. 确保启动命令中包含必要的Node.js选项,如--loader和--experimental-json-modules。 2. 检查文件扩展名是否正确,并且对应的加载器已正确配置。 3. 更新Node.js到较新的版本,以支持所需的实验性功能。 4. 配置路径别名解析,使用例如tsconfig-paths这样的库来帮助Node.js识别别名路径。 5. 对于element-theme-replace相关的错误,可能需要检查其配置文件或构建步骤,确保处理非JavaScript文件使用了正确的工具和加载器。 现在,我需要将这些思路整理成结构化的解决方案,分步骤说明如何处理ERR_UNKNOWN_FILE_EXTENSION错误,并针对element-theme-replace的情况给出具体建议。同,需要确保回答符合用户的要求,使用中文,正确应用LaTeX格式,生成相关问题,并在引用部分添加正确的标识。</think>### Node.js ERR_UNKNOWN_FILE_EXTENSION 解决方案 #### 1. 错误原因分析 当Node.js无法识别文件扩展名,会抛出`ERR_UNKNOWN_FILE_EXTENSION`错误。常见场景包括: - 导入`.ts`文件未配置TypeScript加载器; - 导入`.json`文件未启用实验性JSON模块[^1]; - 使用路径别名但未正确解析。 #### 2. 具体解决步骤 **步骤1:检查启动命令配置** 若使用`ts-node`运行TypeScript文件,需添加`--loader`参数: ```bash node --loader ts-node/esm --experimental-json-modules your-script.ts ``` 此命令同启用JSON模块支持,避免导入JSON文件报错[^1]。 **步骤2:启用JSON模块** 在低版本Node.js(如v14~v16)中,需通过以下方式导入JSON: ```javascript import pkg from './package.json' assert { type: 'json' }; ``` 并在启动命令中添加`--experimental-json-modules`。 **步骤3:配置路径别名解析** 若项目中使用了`tsconfig.json`的路径别名(如`@/*`),需安装`tsconfig-paths`: ```bash npm install tsconfig-paths ``` 并在启动命令中引入: ```bash node -r tsconfig-paths/register --loader ts-node/esm your-script.ts ``` **步骤4:处理element-theme-replace问题** 若错误与`element-theme-replace`相关,可能是其依赖的SCSS/CSS文件未被正确处理。尝试以下方法: 1. 确保已安装`sass`和`postcss`: ```bash npm install sass postcss --save-dev ``` 2. 在构建命令中显式指定文件加载器: ```bash node --loader=./custom-loader.js your-theme-script.js ``` #### 3. 通用优化建议 - 升级Node.js到v18+,默认支持更多实验性功能; - 使用`ESM`替代`CommonJS`,确保文件扩展名完整(如`.js`改为`.mjs`); - 在`package.json`中声明`"type": "module"`以启用ES模块。 $$ \text{示例:模块解析优先级} = \begin{cases} 1. & \text{显式文件扩展名(如".ts")} \\ 2. & \text{package.json的exports字段} \\ 3. & \text{默认扩展名(.js, .json等)} \end{cases} $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值