VueJS+BabylonJS+Node项目Jest配置Babel后仍遇Unexpected token错误
问题场景
在VueJS+BabylonJS+Node项目中搭建Jest单元测试,执行npm test时遭遇解析错误,已配置Babel但问题未解决。
当前配置(package.json)
"jest": { "testEnvironment": "node", "transform": { "^.+\\.js$": "babel-jest" } }, "babel": { "presets": [ ["@babel/preset-env", { "targets": { "node": "current" } }] ] },
错误信息
Jest 遇到意外的 token
Jest 无法解析文件。这种情况通常发生在你的代码或依赖使用了非标准 JavaScript 语法,或者 Jest 未配置支持该语法时。
Jest 开箱即支持 Babel,会根据你的 Babel 配置将文件转换为有效的 JS。
export * from "./abstractScene.js";
^^^^^^
SyntaxError: Unexpected token 'export'
解决步骤
修改Jest配置,让Babel转译BabylonJS依赖
默认Jest不会转译node_modules中的代码,但BabylonJS使用ES模块语法,需要让babel-jest处理它。更新Jest配置:"jest": { "testEnvironment": "node", "transform": { "^.+\\.js$": "babel-jest" }, "transformIgnorePatterns": [ "/node_modules/(?!(@babylonjs|babylonjs)/)" ] }这里
transformIgnorePatterns的规则表示:不对node_modules中除@babylonjs和babylonjs之外的包忽略转译,确保这两个包的ES模块代码被Babel处理。确认Babel依赖完整
确保已安装必要的Babel相关依赖,若未安装,执行以下命令:npm install --save-dev @babel/core @babel/preset-env babel-jest简化Babel配置(可选)
可以简化@babel/preset-env的配置,让它自动适配当前环境:"babel": { "presets": ["@babel/preset-env"] }原配置的
targets: { node: "current" }也可保留,不影响功能。若涉及Vue单文件组件(可选)
若项目中存在.vue文件,需添加vue-jest处理这类文件,更新Jest的transform配置:"transform": { "^.+\\.js$": "babel-jest", "^.+\\.vue$": "vue-jest" }同时安装依赖:
npm install --save-dev vue-jest
内容的提问来源于stack exchange,提问作者arth prajapati

