使用adapter-node构建的SvelteKit官方示例无法运行的问题排查
解决SvelteKit Node适配器构建后运行报错问题
问题原因
你的项目根目录package.json已设置"type": "module",但@sveltejs/adapter-node的构建输出目录(/tmp/realworld)中没有对应的模块类型配置,Node会默认将该目录下的.js文件识别为CommonJS模块,因此遇到import语法时抛出错误。
解决方法
方法一:手动添加package.json到构建输出目录
在/tmp/realworld目录下创建package.json文件,内容如下:
{ "type": "module" }
完成后执行node /tmp/realworld/index.js即可正常启动服务。
方法二:修改构建脚本自动生成配置
修改项目根目录package.json中的build命令,在构建完成后自动生成所需配置:
"scripts": { "dev": "vite dev", "build": "vite build && echo '{\"type\": \"module\"}' > /tmp/realworld/package.json", "preview": "vite preview", "lint": "prettier --check --plugin-search-dir=. .", "format": "prettier --write --plugin-search-dir=. ." }
执行npm run build后,输出目录会自动生成配置文件,直接运行启动命令即可。
方法三:启动时强制指定模块类型
如果不想修改文件,可在启动命令中添加参数强制Node将文件当作ES模块处理:
node --input-type=module /tmp/realworld/index.js
内容的提问来源于stack exchange,提问作者Alok
相关产品推荐
相关产品推荐

