在Mac执行npm run prod时报错ERR_REQUIRE_ESM,求解决方案
在Mac系统执行npm run prod时触发以下错误:
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /Volumes/jack/company/et e ch/projects/node_modules/postcss-cli/index.js
at Object.Module._extensions..js (internal/modules/cjs/loader.js: 1173:13)
at Module.load (internal/modules/cjs/loader.js:1001:32)
at Function.Module._load (internal/modules/cjs/loader.js:900:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
at internal/main/run_main_module.js:18:47
code: 'ERR_REQUIRE_ESM'
以下是几种可行的解决方式:
降级postcss-cli到兼容CommonJS的版本
最新版postcss-cli已改为ES模块,若你的项目基于CommonJS(使用require()语法),可安装仍支持CommonJS的旧版本:npm uninstall postcss-cli npm install postcss-cli@8.x --save-dev将项目转为ES模块规范
在项目根目录的package.json中添加配置,让项目默认使用ES模块:"type": "module"注意:修改后需将项目中所有
require()调用替换为import语法,同时确保所有依赖包都支持ESM规范。通过工具兼容ESM与CommonJS
若不想修改项目结构,可借助esm包实现兼容:
先安装依赖:npm install esm --save-dev再修改
package.json中的prod脚本:"scripts": { "prod": "node -r esm 你的构建入口脚本.js" }
内容的提问来源于stack exchange,提问作者Atikur Rahman

