Vue中使用Jest测试用例通过但项目编译失败求助
问题排查:Vue项目集成Jest后编译失败(JSON格式错误)
从你提供的错误信息和package.json内容来看,问题根源是package.json存在JSON语法错误,具体出现在browserslist配置和jest配置的衔接位置。错误提示明确指出:Unexpected token { in JSON at position 1057 while parsing near '... 2 versions" ], { "jest": { ...',说明JSON解析器在处理browserslist数组结束后,遇到了不符合语法的{符号。
修复后的完整package.json配置
{ "name": "weather-app", "version": "0.1.0", "private": true, "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint", "test": "jest" }, "dependencies": { "@babel/core": "^7.7.2", "@vue/test-utils": "^1.0.0-beta.29", "babel-core": "^7.0.0-bridge.0", "core-js": "^3.3.2", "vue": "^2.6.10", "vuex": "^3.1.2" }, "devDependencies": { "@vue/cli-plugin-babel": "^4.0.0", "@vue/cli-plugin-eslint": "^4.0.0", "@vue/cli-service": "^4.0.0", "babel-eslint": "^10.0.3", "babel-jest": "^24.9.0", "eslint": "^5.16.0", "eslint-plugin-vue": "^5.0.0", "jest": "^24.9.0", "vue-jest": "^3.0.5", "vue-template-compiler": "^2.6.10" }, "eslintConfig": { "root": true, "env": { "node": true }, "extends": [ "plugin:vue/essential", "eslint:recommended" ], "rules": { "no-console": 0 }, "parserOptions": { "parser": "babel-eslint" } }, "postcss": { "plugins": { "autoprefixer": {} } }, "browserslist": [ "> 1%", "last 2 versions" ], "jest": { "moduleFileExtensions": [ "js", "vue" ], "transform": { "^.+\\.js$": "<rootDir>/node_modules/babel-jest", ".*\\.(vue)$": "<rootDir>/node_modules/vue-jest" }, "moduleNameMapper": { "^@/(.*)$": "<rootDir>/src/$1" } } }
错误原因说明
你原始的package.json因为写成一行,可能在browserslist数组结束后出现了语法错误(比如多余的符号、错误的逗号位置)。JSON语法对格式要求非常严格:
- 所有键名必须用双引号包裹
- 键值对之间用英文逗号分隔,最后一个键值对不能加逗号
- 数组和对象的括号必须正确闭合
- 不能出现多余的符号(比如额外的
{或})
修复后,确保了每个配置块的结构正确,browserslist作为一个独立的键值对,后面正确衔接jest配置,没有多余的语法错误。
验证步骤
- 替换你的package.json为上面修复后的版本
- 执行
npm install确保依赖正常(若之前依赖已安装完成可跳过) - 重新执行
npm run serve或npm run build,编译应该能正常通过 - 再次运行
npm test,确认Jest测试依然可以正常执行
内容的提问来源于stack exchange,提问作者Naveen Kashyap
相关产品推荐
相关产品推荐

