Vue开玩笑找不到通天塔

时间:2019-02-13 18:27:30

标签: vue.js jestjs babeljs

我正在尝试测试vue组​​件,但是我总是遇到以下错误:

  

在对象上找不到模块“ babel-core”。 (node_modules / vue-jest / lib / compilers / babel-compiler.js:1:15)

package.json:

"devDependencies": {
    "@babel/core": "^7.2.2",
    "@babel/plugin-syntax-dynamic-import": "^7.2.0",
    "@babel/preset-env": "^7.3.1",
    "@vue/test-utils": "^1.0.0-beta.29",
    "babel-jest": "^24.1.0",
    "babel-loader": "^8.0.5",
    "css-loader": "^2.1.0",
    "file-loader": "^3.0.1",
    "jest": "^24.1.0",
    "mini-css-extract-plugin": "^0.5.0",
    "node-sass": "^4.11.0",
    "sass-loader": "^7.1.0",
    "style-loader": "^0.23.1",
    "vue": "^2.6.6",
    "vue-jest": "^3.0.3",
    "vue-loader": "^15.6.2",
    "vue-router": "^3.0.2",
    "vue-template-compiler": "^2.6.6",
    "webpack": "^4.29.3",
},

.babelrc

{
    "presets": [
        "@babel/preset-env"
    ],
    "plugins": [
        "@babel/plugin-syntax-dynamic-import"
    ]
}

jest.config.js

module.exports = {
    verbose: true,
    moduleFileExtensions: [ "js", "json", "jsx", "ts", "tsx", "node", "vue" ],
    transform: {
        // process js with `babel-jest`
        "^.+\\.js$": "babel-jest",
        // process `*.vue` files with `vue-jest`
        ".*\\.(vue)$": "vue-jest",
    }
};

您可以看到此行为here

查看引用的文件时,我可以看到:

const babel = require('babel-core')

那不是@babel/core吗?

所以我的问题是如何解决该错误?还是来自vue-jest的问题?

2 个答案:

答案 0 :(得分:3)

如@JamesCoyle所建议,安装babel-bridge可以解决

npm i -D babel-core@^7.0.0-bridge.0

答案 1 :(得分:0)

软件包vue-jest可以在babel-core上使用。您没有安装该软件包。为了解决您的问题而不安装额外的软件包,请进入文件-> \ node_modules \ vue-jest \ lib \ compilers \ babel-compiler.js,您将看到下面的代码:

const babel = require('babel-core')
const loadBabelConfig = require('../load-babel-config.js')

module.exports = function compileBabel (scriptContent, inputSourceMap, inlineConfig, vueJestConfig, filePath) {
  ...

第一个常量是导入npm软件包babel-core。

如果使用@ babel / core进行更改,则应解决问题。更改后,它看起来应该像这样:

const babel = require('@babel/core')
const loadBabelConfig = require('../load-babel-config.js')

module.exports = function compileBabel (scriptContent, inputSourceMap, inlineConfig, vueJestConfig, filePath) {
  ...

我在网上看到了一些解决方案,他们建议将babel-core(版本6)替换为babe-core(7.0.0.0-bridge)。就我而言,这破坏了我的解决方案,我无法再发布任何东西,但开玩笑却可以。这是无法安装的人的解决方案 babel-core@7.0.0-bridge.0

要安装@ babel / core:npm install --save-dev @ babel / core Babel-core是babel的版本6,而@ babel / core是babel的版本7。