设置 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

如何使用node.js jasmine设置断点?

Angular 1.x Browserify Jasmine 如何设置代码覆盖测试?

使用 Jasmine 单独测试 Marionette 模块

使用 Jasmine 进行异步测试

在 Jasmine 测试中更新 React 组件状态