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

Vite SSR生产启动报错:JSON模块导入相关问题求助

Vite SSR生产环境启动JSON文件导入错误解决方案

问题原因

在ESM模块(.mjs)中,Node.js默认禁止直接导入JSON文件,生产环境执行serve命令时,导入dist/client/ssr-manifest.json触发了模块导入限制,引发ERR_UNKNOWN_FILE_EXTENSION或ERR_IMPORT_ASSERTION_TYPE_MISSING错误。


方法1:使用导入断言(Node.js 17.1+/16.14+)

  1. 修改server.mjs中的JSON导入代码,添加导入断言:
// 替换原导入语句
import manifest from './dist/client/ssr-manifest.json' assert { type: "json" };
  1. 更新package.json中的serve命令,保留实验性参数:
"serve": "cross-env NODE_ENV=production node --experimental-json-modules server.mjs"

方法2:用fs模块读取解析JSON(无版本限制)

通过Node.js内置的fs模块读取文件并手动解析,绕过ESM的JSON导入限制:

// 替换server.mjs中的JSON导入代码
import { readFileSync } from 'fs';
import { resolve } from 'path';

const manifestPath = resolve(__dirname, './dist/client/ssr-manifest.json');
const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));

无需修改serve命令,直接执行原命令即可:

"serve": "cross-env NODE_ENV=production node server.mjs"

注意事项

  • 方法1依赖Node.js实验性特性,适合愿意使用新特性的场景;
  • 方法2兼容性更强,是生产环境的稳妥选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:10:23