开玩笑:无法在模块外部使用import语句

时间:2020-01-13 02:30:55

标签: import module jestjs

使用Jest运行测试时出现错误,我尝试修复此错误2个小时。但是,我无法修复它。我的模块正在使用ggplot(FindataCOmp,aes(x=Time,y=Count_of_FTE_Actual))+geom_bar(stat='identity')软件包,并且此软件包中发生错误。但是,我不知道为什么会发生这种情况以及如何解决它。

jest.config.js

gapi-script

babel.config.js

module.exports = {
  "collectCoverage": true,
  "rootDir": "./",
  "testRegex": "__tests__/.+\\.test\\.js",
  "transform": {
    '^.+\\.js?$': "babel-jest"
  },
  "moduleFileExtensions": ["js"],
  "moduleDirectories": [
    "node_modules",
    "lib"
  ]
}

methods.test.js

module.exports = {
  presets: [
    '@babel/preset-env',
  ]
};

methods.js

import methods, { typeToActions } from '../lib/methods';

错误消息

C:\ haram \ github \ react-youtube-data-api \ node_modules \ gapi-script \ index.js:1 ({“对象。”:功能(模块,导出,要求,__目录名,__文件名,全局,笑话){导入 {'gapi,gapiComplete}来自'./gapiScript';

import { gapi } from "gapi-script";
...

我的设置出了什么问题?

3 个答案:

答案 0 :(得分:1)

Jest需要babel才能使用模块。 仅就测试而言,您不需要 jest.config.js ,只需将测试文件命名为xxx.spec.js或xxx.test.js或将文件放在名为 test < / strong>。

我使用以下 babel.config.js

module.exports = function (api) {
  api.cache(true)

  const presets = [
    "@babel/preset-env"
  ]

  return {
    presets
  }
}

当设置不太复杂时,无需在package.json中添加“ type”:“ module”或按照其他答案所述使用mjs。

答案 1 :(得分:0)

在撰写本文时,Jest正在为ES6模块提供支持。您可以在此处跟踪进度:

https://jestjs.io/docs/en/ecmascript-modules

现在,您可以通过运行以下命令来消除此错误:

node --experimental-vm-modules node_modules/.bin/jest

而不是简单地

jest

使用此解决方案之前,请务必检查链接。

答案 2 :(得分:0)

我在 Paulo Coghi 对另一个问题的回答的帮助下解决了这个问题 -

Does Jest support ES6 import/export?

第 1 步:

将您的测试环境添加到项目根目录中的 .babelrc 中:

{
  "env": {
    "test": {
      "plugins": ["@babel/plugin-transform-modules-commonjs"]
    }
  }
}

第 2 步:

安装 ECMAScript 6 转换插件:

npm install --save-dev @babel/plugin-transform-modules-commonjs