首页 > 解决方案 > 无法在模块外使用导入语句 - Vuex 测试类星体

问题描述

你好吗 ?

我在用 Quasar 测试 Vuex 的东西时遇到了问题。

测试组件工作正常,但是当我开始测试我的商店时,我明白了。

规格文件:

/test/jest/__tests__/store/auth/mutations.spec.js

import { store } from 'src/store';
import { mutations } from 'src/store/auth';
import mutations from 'src/store/auth/mutations';

我尝试导入商店内容的所有这些方式,我都收到了这个错误:

({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import { store } from 'quasar/wrappers';

SyntaxError: Cannot use import statement outside a module

如何在我的规范文件中导入我的商店?

标签: unit-testingvue.jsjestjsvuexquasar-framework

解决方案


您的问题是import纯 JavaScript 不支持语句,因此 Node.js 也不支持。import是一个叫做ES Modules. 由于 Jest 在 Node 中运行您的测试,因此您得到了SyntaxError无效import { store } from 'quasar/wrappers'的 JS 语法。

解决方案是您需要告诉 Jest 使用 Babel(或类似工具)来转换您的测试文件,然后再尝试在 Node.js 中执行它。

这需要在你的jest.config.js, 和相关的包中进行一些配置babel-jestbabel并创建一个.babelrcorbabel.config.js来告诉 Babel 如何处理你的测试文件。

实际正确的配置可能取决于许多因素,但作为起点,请参考以下内容:

另外我建议考虑使用 Quasar CLI,它为您提供了一种为您的 Quasar 项目自动设置 Jest 的便捷方法,包括一个简单的示例测试,您可以将其用作起始参考:https ://testing.quasar.dev/


推荐阅读