SvelteKit部署Phusion Passenger遇ES6导入错误,如何改为.mjs输出?
如何在Plesk(Phusion Passenger)上运行SvelteKit应用?
报错信息
app.js被视为ES模块文件,因为它是一个.js文件,其最近的父级package.json包含"type": "module",该声明将此包范围内的所有.js文件视为ES模块。
请将app.js重命名为以.cjs结尾,修改引用代码以使用动态import()(所有CommonJS模块均支持该方式),或在/usr/home/michael/domains/michael.usermd.net/public_nodejs/package.json中将"type": "module"改为"type": "commonjs",将所有.js文件视为CommonJS(改用.mjs存放所有ES模块)。
已尝试的操作
- 在package.json中切换
type: module和type: commonjs:能让app.js运行,但Vite构建的所有含import语句的文件都需要是.mjs格式 - 手动将.js文件改为.mjs:
import可正常工作,但无法对所有构建文件手动修改 - 尝试在
vite.config.js中配置Rollup输出.mjs后缀,代码如下,但执行vite build时收到警告,提示该设置会被SvelteKit覆盖
export default defineConfig({ build: { rollupOptions: { output: { entryFileNames: `[name].[hash].mjs`, chunkFileNames: `[name].[hash].mjs`, }, }, }, });
当前限制
- 受主机服务商配置限制,无法将
app.js改为app.cjs,也无法访问Passengerfile.json进行相关设置 - 未找到在
svelte.config.js中配置Rollup输出后缀的相关文档或方案
问题
是否有解决方法或建议?是否只能更换主机服务商来更便捷地运行SvelteKit应用?
内容的提问来源于stack exchange,提问作者MikeyB
相关产品推荐
相关产品推荐

