设置 Jasmine + Webdriver - “不能在模块外使用导入”
Posted
技术标签:
【中文标题】设置 Jasmine + Webdriver - “不能在模块外使用导入”【英文标题】:setting up Jasmine + Webdriver - "cannot use import outside a module" 【发布时间】:2020-04-15 21:31:41 【问题描述】:我正在尝试使用 webdriver 和 Jasmine 在浏览器中针对反应应用程序设置基本的自动化测试。我正在使用页面对象模型来描述我正在测试的应用程序,如下所示:
Example page object from JasmineBDD
我在 Jasmine 上运行良好,并且满足了规范要求。但是在浏览器生成后,我得到一个模块错误
import SplashScreen from './page_models/splash_screen.page'
^^^^^^
SyntaxError: Cannot use import statement outside a module
我通过本地呼叫 wdio node node_modules/.bin/wdio ./spec/support/wdio.conf.js
来启动测试。如何在环境中运行我的 Jasmine 规范代码,使其位于模块上下文中?
谢谢:)
【问题讨论】:
您好,您能否确认您是否使用Babel
转编译器并且设置正确?
@Naveen 我敢打赌它没有正确设置。我会学习:)
【参考方案1】:
原来我需要在我的 jasmine 配置中调用 babel/register
,如下所示:
beforeSession: function (config, capabilities, specs)
require('@babel/register');
,
【讨论】:
【参考方案2】:nodejs 版本 require,或使用 Babel/Typescript 将您的代码从导入/导出转换为旧语法。
在 nodejs 13+ 中,您可以启用 ES6 导入/导出支持。这是未经测试的,所以可能是一些水下岩石。但你可以尝试: https://medium.com/@nodejs/announcing-core-node-js-support-for-ecmascript-modules-c5d6dc29b663
【讨论】:
以上是关于设置 Jasmine + Webdriver - “不能在模块外使用导入”的主要内容,如果未能解决你的问题,请参考以下文章
在 testRunner 设置为 jest-circus 的情况下访问 jasmine 会导致:ReferenceError: jasmine is not defined