在cPanel部署ReactJS应用时Phusion Passenger出现ERR_REQUIRE_ESM错误
在cPanel通过Phusion Passenger部署ReactJS时的ERR_REQUIRE_ESM错误解决
错误详情
错误核心提示:
/opt/cpanel/ea-ruby27/root/usr/share/passenger/helper-scripts/node-loader.js:80 return originalRequire.apply(this, arguments); ^ Error [ERR_REQUIRE_ESM]: require() of ES Module /home/taliink1/public_html/frontend/app.js from /opt/cpanel/ea-ruby27/root/usr/share/passenger/helper-scripts/node-loader.js not supported. app.js被识别为ES模块文件,因其所在目录的最近package.json中包含"type": "module",声明该包范围内所有.js文件为ES模块。 code: 'ERR_REQUIRE_ESM'
调用栈信息:
at Module.require (/opt/cpanel/ea-ruby27/root/usr/share/passenger/helper-scripts/node-loader.js:80:25) at loadApplication (/opt/cpanel/ea-ruby27/root/usr/share/passenger/helper-scripts/node-loader.js:243:2) at setupEnvironment (/opt/cpanel/ea-ruby27/root/usr/share/passenger/helper-scripts/node-loader.js:214:2) at Object.<anonymous> (/opt/cpanel/ea-ruby27/root/usr/share/passenger/helper-scripts/node-loader.js:133:1) {
解决方法
- 将
app.js重命名为.cjs后缀,明确标记该文件为CommonJS模块 - 修改调用代码使用
dynamic import()语法(所有CommonJS模块均支持该方式加载ES模块) - 修改
/home/taliink1/public_html/frontend/package.json中的配置,将"type": "module"改为"type": "commonjs",使目录下所有.js文件默认被识别为CommonJS模块;若仍需保留ES模块,将对应文件改为.mjs后缀
内容的提问来源于stack exchange,提问作者high tech
相关产品推荐
相关产品推荐

