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

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到兼容版本

  1. 打开项目的package.json,找到@astrojs/image依赖,将版本更新到最新稳定版(建议^0.17.2及以上)
  2. 删除旧依赖文件:
rm -rf node_modules package-lock.json
  1. 重新安装依赖并启动服务:
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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 08:36:48