我想将我的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 版本:确保 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);
}
})();