使用@sveltejs/adapter-node执行npm run build时遇Unexpected token错误
Svelte生产构建报错RollupError: Unexpected token的解决思路
执行npm run build时出现以下Rollup错误,开发和预览模式却完全正常:
> Using @sveltejs/adapter-node error during build: RollupError: Unexpected token (Note that you need plugins to import files that are not JavaScript) at error (file:///Users/marc/Sites/appname.com/node_modules/rollup/dist/es/shared/node-entry.js:2095:30) at Module.error (file:///Users/marc/Sites/appname.com/node_modules/rollup/dist/es/shared/node-entry.js:13143:16) at Module.tryParse (file:///Users/marc/Sites/appname.com/node_modules/rollup/dist/es/shared/node-entry.js:13820:25) at Module.setSource (file:///Users/marc/Sites/appname.com/node_modules/rollup/dist/es/shared/node-entry.js:13430:39) at ModuleLoader.addModuleSource (file:///Users/marc/Sites/appname.com/node_modules/rollup/dist/es/shared/node-entry.js:23395:20)
结合你手动更新依赖的情况,以下是具体排查和解决步骤:
定位未被处理的非JS文件
错误核心是Rollup遇到了无法解析的非JS文件,开发模式下Vite可能默认兼容了这类文件,但生产构建需要显式配置插件。先排查最近新增的依赖或自定义文件,比如runner、webrtc-adapter这类库是否输出非ES模块代码,或是你引入了.txt、.md这类未配置插件处理的静态文件。修正依赖配置与预处理器
你把svelte-preprocess放在了dependencies里,它属于开发依赖,先移到devDependencies中。然后确认vite.config.js里正确配置了预处理器:import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vite'; import preprocess from 'svelte-preprocess'; export default defineConfig({ plugins: [sveltekit({ preprocess: preprocess() })] });若使用Sass,确保
sass依赖安装正常,预处理器已启用Sass支持。排查依赖版本兼容性
手动更新的依赖可能存在版本冲突:@sveltejs/kit@1.5.0与vite@4.0.0可能存在适配问题,尝试回退Vite到3.x稳定版(如vite@3.2.7);svelte-fullcalendar@2.0.0-beta.0是测试版,可能未适配生产构建,试试降级到稳定版或查看官方文档的额外配置要求;- 冷门包
runner若为CommonJS格式,需在Vite配置中添加处理规则:export default defineConfig({ plugins: [sveltekit()], optimizeDeps: { include: ['runner'] }, build: { commonjsOptions: { include: [/runner/, /node_modules/] } } });
清理缓存后重试
删除node_modules、package-lock.json,重新执行npm install;同时删除.svelte-kit和dist目录,确保构建环境干净后再运行npm run build。启用详细日志定位具体文件
修改package.json中的build脚本:"build": "vite build --debug"运行后查看详细日志,找到触发错误的具体文件路径,精准定位问题根源。
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

