You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SvelteKit部署Ubuntu VPS遇ES模块加载错误求助

解决SvelteKit Node适配器部署时ES模块语法错误

问题场景

使用Skeleton UI开发的SvelteKit应用,本地执行npm run build生成build文件夹后,运行服务可正常访问,但在全新Ubuntu 22.04 VPS(Node.js 22.10.0)中运行node index.js时出现以下错误:

(node:33314) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
/www/test/index.js:1
import { handler } from './handler.js';
^^^^^^
SyntaxError: Cannot use import statement outside a module
...(错误栈省略)

项目根目录package.json已配置"type": "module",且使用@sveltejs/adapter-node适配器。

核心原因

Node.js判断文件是否为ES模块,优先读取当前工作目录下package.json的type字段。如果直接进入build目录执行node index.js,当前目录无包含"type": "module"的package.json,Node会默认将文件当作CommonJS模块处理,从而抛出import语句的语法错误。

本地运行正常是因为通常在项目根目录执行node build/index.js,此时Node会读取根目录的package.json,正确识别ES模块。

解决方案

方案1:从项目根目录启动服务

回到包含package.json的项目根目录,执行以下命令启动:

node build/index.js

方案2:在build目录添加package.json

若需在build目录内启动,可在build文件夹中创建一个简单的package.json,添加type字段:

{
  "type": "module"
}

之后直接在build目录执行node index.js即可。

方案3:修改入口文件后缀(不推荐)

将build目录下的index.js重命名为index.mjs,Node会自动识别为ES模块。此方法需同步修改相关引用,维护成本较高,优先推荐前两种方案。

内容的提问来源于stack exchange,提问作者Shark00n

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 13:20:29