NodeJS Express 错误 [ERR_REQUIRE_ESM]:ES 模块的 require()

问题描述 投票:0回答:1

我想将我的express.js项目部署到cpanel,但是加载卡住了,当我检查错误时它返回了这个:

[ E 2024-08-09 16:57:17.2850 1873213/Tg9 age/Cor/App/Implementation.cpp:221 ]: Could not spawn process for application /home/skynetdi/skynet_crm_backend: The application process exited prematurely.
App 1191450 output: Error [ERR_REQUIRE_ESM]: require() of ES Module /home/skynetdi/skynet_crm_backend/src/index.js from /opt/cpanel/ea-ruby27/root/usr/share/passenger/helper-scripts/node-loader.js not supported.

我的 package.json 文件:

"main": " app.cjs",
"type": "module",
"scripts": {
   "start": "node app.cjs"
},

app.cjs:

(() => import('./src/index.js'))();

我已经搜索了问题,有些文章说我需要使用 app.cjs 并导入主文件,但它不能解决我的问题,我尝试从终端运行它,它运行得很好,但是当我从安装的 Node.js 应用程序运行它,加载总是卡住,并且错误总是显示需要 esm。

node.js express cpanel es6-modules
1个回答
0
投票

Node.js 版本:确保 cPanel 上使用的 Node.js 版本支持 ES 模块(需要 Node.js 12.x 或更高版本,但建议使用 Node.js 14.x 或更高版本)。

cPanel Node.js 设置:检查 cPanel 的 Node.js 应用程序设置是否支持 ES 模块并正确配置为运行 .cjs 文件,或者是否需要其他配置。 尝试下面看看

// app.cjs
  (async () => {
    try {
      const module = await import('./src/index.js');
      // If necessary, you can call a start function from the imported module here
      if (module.default && typeof module.default === 'function') {
        module.default(); // Call the default export if it's a function
      }
    } catch (error) {
      console.error('Failed to start the application:', error);
      process.exit(1);
    }
  })();
© www.soinside.com 2019 - 2024. All rights reserved.