尝试在 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 规范文件中导入类时出现“语法错误:无法在模块外使用导入语句”的主要内容,如果未能解决你的问题,请参考以下文章

无法加载模块脚本 - 在 index.html 中导入类

在 JSP 文件中导入类

在 Doctrine ORM 2 中加入类表继承时出现“主键 elementId 的缺失值”

java如何在指定目录中导入类

Typescript:如何从 javascript 文件中导入类?

使用 css 模块,如何从文件中导入类