Flo*_*ian 2 passenger plesk svelte sveltekit
我使用 SvelteKit 和 @sveltejs/adapter-node 构建了一个应用程序,并将其部署到通过 Git 使用 Plesk 管理的服务器上。我已经激活并配置了node.js-Plugin并正确设置了所有路径,但我无法使用Phusion Passenger(这是Plesk使用的应用程序服务器)运行它。我收到以下错误:
/usr/share/passenger/helper-scripts/node-loader.js:80
return originalRequire.apply(this, arguments);
^
Error [ERR_REQUIRE_ESM]: require() of ES Module /var/www/vhosts/mydomain.host/build/index.js from /usr/share/passenger/helper-scripts/node-loader.js not supported.
Instead change the require of index.js in /usr/share/passenger/helper-scripts/node-loader.js to a dynamic import() which is available in all CommonJS modules.
at Module.require (/usr/share/passenger/helper-scripts/node-loader.js:80:25)
at loadApplication (/usr/share/passenger/helper-scripts/node-loader.js:243:2)
at setupEnvironment (/usr/share/passenger/helper-scripts/node-loader.js:214:2)
at Object.<anonymous> (/usr/share/passenger/helper-scripts/node-loader.js:133:1) {
code: 'ERR_REQUIRE_ESM'
}
Node.js v17.6.0
Run Code Online (Sandbox Code Playgroud)
有没有解决方案可以让我的 SvelteKit 应用程序在 Plesk 上运行?
我已经尝试在其中构建一个entry.cjs文件(如本线程中的建议),但效果不佳。import("index.js");
这似乎是 Passenger 的普遍问题。他们的帮助程序脚本不兼容 ES6。
更新:我找到了解决方法。
创建一个entry.cjs 文件并使用 async/await 动态导入您通常在 plesk 中设置的应用程序入口文件:
// entry.cjs
async function loadApp() {
const { app } = await import("./app.js"); // this is your normal entry file - (index.js, main.js, app.mjs etc.)
}
loadApp()
Run Code Online (Sandbox Code Playgroud)
然后在 Plesk 中将您的应用程序入口文件设置为 ./entry.cjs
| 归档时间: |
|
| 查看次数: |
1125 次 |
| 最近记录: |