尝试在 Jasmine 规范文件中导入类时出现“语法错误:无法在模块外使用导入语句”
Posted
技术标签:
【中文标题】尝试在 Jasmine 规范文件中导入类时出现“语法错误:无法在模块外使用导入语句”【英文标题】:Get "SyntaxError: Cannot use import statement outside a module" when attempting to import a class in Jasmine spec file 【发布时间】:2020-02-20 20:50:31 【问题描述】:作为一个练习,我决定使用在浏览器中运行的 ES6 语法创建一个小型 javascript 游戏。该程序运行良好。
我想使用 Jasmine 对其进行测试。但是,每当我尝试执行导入时,例如
import Deck from "../Deck.js";
Deck.js 开始:
export default class Deck
我收到错误SyntaxError: Cannot use import statement outside a module
。
我做过的事情:
已安装节点 v13.0.1 - 我认为此版本的节点允许使用 es6 模块。 安装jasmine并初始化node ./node_module/jasmine/bin/jasmine init
运行 node ./node_module/jasmine/bin/jasmine
- 无需导入即可正常工作
运行 node --experimental-modules ./node_module/jasmine/bin/jasmine
- 不适用于导入
尝试使用 require 而不是 import:const Deck = require('../Deck.js');
- SyntaxError: Unexpected token 'export'
如何让茉莉花与进口产品一起使用?目前我无法包含任何要测试的文件!
我确定我做错了,但我只是想要一些命令行测试。
【问题讨论】:
const Deck = require('../Deck');
SyntaxError: Unexpected token 'export'
你的 jasmine 文件在哪个目录位置?你的茉莉花规格文件在模块中吗?是否添加了 specRunner.html 文件?
【参考方案1】:
按照 Babel 的官方指南https://babeljs.io/setup#installation
然后从该解决方案中选择一个选项:https://***.com/a/59399717/673351
就个人而言,我已将我的规范文件重命名为具有 mjs
扩展名,因为我不想使用 LTS(当前为 12)版本的节点。
【讨论】:
以上是关于尝试在 Jasmine 规范文件中导入类时出现“语法错误:无法在模块外使用导入语句”的主要内容,如果未能解决你的问题,请参考以下文章
在 Doctrine ORM 2 中加入类表继承时出现“主键 elementId 的缺失值”