Astro主题模板项目运行失败:Unexpected token解析错误求助
解决
@astrojs/image解析错误:Unexpected token (81:70) 问题说明
克隆astro-landing-page项目后,在Node v20.5.0、npm 9.8.0环境下执行npm install和npm run dev,访问http://localhost:3000/时触发解析错误,错误指向/node_modules/@astrojs/image/dist/lib/get-image.js第81行的process.env.-语法。
解决方案
方案1:降级Node到18.x LTS版本
该项目依赖的旧版@astrojs/image未适配Node 20的语法规则,降级到Node 18系列(比如v18.17.0)可直接解决兼容性问题:
- 用nvm切换版本:
nvm install 18.17.0 && nvm use 18.17.0 - 重新执行
npm install和npm run dev
方案2:升级@astrojs/image到兼容版本
- 打开项目的
package.json,找到@astrojs/image依赖,将版本更新到最新稳定版(建议^0.17.2及以上) - 删除旧依赖文件:
rm -rf node_modules package-lock.json
- 重新安装依赖并启动服务:
npm install npm run dev
方案3:临时应急修复(不推荐)
直接修改错误文件的语法,把process.env.-改为合法的方括号访问方式:
打开/node_modules/@astrojs/image/dist/lib/get-image.js第81行,修改为:
const isDev = (_b = (Object.assign(import.meta.env,{_:process.env._,'-':process.env['-'],SSR:true,}))) == null ? void 0 : _b.DEV;
修改后重启npm run dev即可,但下次执行npm install会覆盖该修改,仅适合临时应急。
错误原因
这个问题是旧版@astrojs/image生成的代码存在语法错误:JavaScript中,-是特殊字符,不能通过.运算符直接访问对象属性(比如process.env.-是无效写法),必须用process.env['-']的方括号语法。
Node 20的V8引擎对语法解析的严格度提升,或者该版本的@astrojs/image未针对Node 20做适配,导致原本在旧Node版本中可能被忽略的语法问题,在Node 20中直接触发解析失败。
内容的提问来源于stack exchange,提问作者TehNewbie
相关产品推荐
相关产品推荐

