提问者:小点点

Jest或Mocha with Vue:SyntaxError:无法在模块外使用import语句


编辑:这篇文章在编辑中失控了,请点击此链接进入一个新的 Stackoverflow 帖子,该帖子更清晰: 语法错误:遵循 vue-test-utils 官方教程时无法在模块外使用导入语句

关于这个问题有成千上万的帖子和帖子,我仍然不能解决我的问题。我遵循Jest和Mocha的“入门”部分,两次都得到相同的错误:< code > syntax error:Cannot use import statement outside a module ,但是它们提供的链接根本没有帮助。

底部有一个新的编辑,其中包含一个干净的新项目的步骤,供您遵循,这会导致错误。

< code>"vue-jest": "^3.0.7",< code>"vue": "^2.6.12",< code > " @ vue/test-utils ":" ^1.2.2"

pack. json

"mocha": "mocha 'tests/Frontend/**/*.test.js'"

example.test.js:

import { mount } from "@vue/test-utils"
import Dashboard from "../../resources/js/views/Dashboard";
import * as assert from "assert";

describe('test example', () => {
    it('should work', () => {
        assert.equal([1, 2, 3].indexOf(4), -1); // doesn't matter what I do here
    })
})

我尝试过的:

  • 使用--要求@babel/Register标志与摩卡
  • 设置"transformIgnorePatterns": [],从而允许考虑所有node_modules
  • 添加. babelrc文件,内容如下:
    这导致构建应用程序时出现以下错误:
Error: Multiple configuration files found. Please remove one:
 - package.json
 - C:\Users\f.marchi\workspace\projects\sanctum-test\.babelrc
{
    "env": {
        "test": {
            "plugins": ["transform-es2015-modules-commonjs"]
        }
    }
}

有人能证实吗,这些文件遗漏了一些非常重要的步骤?我真的不知道自己做错了什么,我只是在遵循教程。

编辑:jest. config.js:

module.exports = {
    clearMocks: true,

    collectCoverage: true,

    coverageDirectory: "coverage",

    moduleFileExtensions: [
        "js",
        "json",
        "vue"
    ],
    transform: {
        ".*\\.(vue)$": "vue-jest"
    },
    transformIgnorePatterns: []
};

编辑:我刚刚再次尝试,如果需要,您可以按照:

  1. Vue Create jest-test
  2. npm install --save-dev jest @vue/test-utils vue-jest
  3. 在 package.json 中添加了 jest 配置:
{
  "jest": {
    "moduleFileExtensions": [
      "js",
      "json",
      "vue"
    ],
    "transform": {
      ".*\\.(vue)$": "vue-jest"
    }
  }
}
{
  "jest": {
    "transform": {
      // process `*.js` files with `babel-jest`
      ".*\\.(js)$": "babel-jest" //<-- changed this
    }
  }
}
module.exports = {
    presets: [
        '@vue/cli-plugin-babel/preset',
        '@babel/preset-env' //<-- added this
    ]
};

共1个答案

匿名用户

你应该使用vue-cli API。

在package.json中,将以下内容添加到脚本中:

"test:unit": "vue-cli-service test:unit"

您已经安装了vue-cli和test-utils,因此它现在应该可以工作了。