Angular 14升级后Jest 29.1.2在GitHub Workflow运行报错求助
解决Jest 29.1.2在GitHub Workflow中出现的
SyntaxError: Unexpected token '.'问题 问题分析
报错中的error?.stack是ES2020可选链操作符,Node.js 16.x原生支持该语法,但GitHub Workflow中出现此错误,核心原因大概率是实际运行的Node版本与配置的16.10不一致,或是依赖安装过程中缓存残留导致的版本不兼容。
排查与解决步骤
1. 确认GitHub Workflow的Node.js实际版本
在Workflow脚本中添加打印Node版本的步骤,验证配置的版本是否生效:
- name: 检查Node.js版本 run: node --version
如果输出不是v16.10.x,修正actions/setup-node的配置,明确指定版本:
- name: 配置Node.js环境 uses: actions/setup-node@v3 with: node-version: '16.10' cache: 'npm' # 若使用yarn/pnpm,替换为对应值
2. 清理依赖缓存并重新安装
GitHub依赖缓存可能残留低版本Node环境下的旧包,导致运行时语法兼容问题。在Workflow中添加清理步骤:
- name: 清理旧依赖并重新安装 run: | rm -rf node_modules rm package-lock.json # 使用yarn则删除yarn.lock,pnpm则删除pnpm-lock.yaml npm install
3. 调整Jest配置匹配Node环境
在jest.config.js中明确指定Node测试环境,避免Jest默认配置与当前Node版本不匹配:
module.exports = { // 其他原有配置... testEnvironment: 'node', transform: { '^.+\\.(ts|js)$': 'ts-jest' } };
同时确保jest-preset-angular版本与Angular 14、Jest 29兼容,推荐使用12.x版本的jest-preset-angular。
4. 同步本地与Workflow的依赖版本
提交本地生成的package-lock.json(或对应锁文件)到仓库,确保Workflow安装的依赖版本与本地完全一致,消除版本差异引发的问题。
内容的提问来源于stack exchange,提问作者Marc Fernandez
相关产品推荐
相关产品推荐

