Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jest es6模块:意外的模块导入_Javascript_Unit Testing_Jestjs - Fatal编程技术网

Javascript Jest es6模块:意外的模块导入

Javascript Jest es6模块:意外的模块导入,javascript,unit-testing,jestjs,Javascript,Unit Testing,Jestjs,我正在测试一个需要导入es6模块的文件,如下所示: 看来我缺少了一些使其正常工作的配置 如果您可以通过另一个单元测试框架轻松实现这一点,我也很感兴趣 提前感谢您的帮助。由于node不支持模块,您必须使用Babel编译文件。看看关于如何配置Jest和Babel的 安装所需的依赖项: 纱线添加——dev babel jest@babel/core@babel/preset env 或 npm安装——保存dev-babel-jest@babel/core@babel/preset-env 在主文件夹

我正在测试一个需要导入es6模块的文件,如下所示:

看来我缺少了一些使其正常工作的配置

如果您可以通过另一个单元测试框架轻松实现这一点,我也很感兴趣


提前感谢您的帮助。

由于node不支持模块,您必须使用Babel编译文件。看看关于如何配置Jest和Babel的

  • 安装所需的依赖项:
  • 纱线添加——dev babel jest@babel/core@babel/preset env

    npm安装——保存dev-babel-jest@babel/core@babel/preset-env

  • 在主文件夹中创建
    babel.config.js
    ,然后粘贴到那里:
  • //babel.config.js
    module.exports={
    预设:[
    [
    “@babel/preset env”,
    {
    目标:{
    节点:“当前”,
    },
    },
    ],
    ],
    };
    
  • 确保
    package.json
    jest.config.js
    中的所有jest设置都设置为默认值

  • AFAIK节点不支持ES2015导入语法。它使用了
    require
    ,现在通过
    NODE_OPTIONS='--实验性虚拟机模块的jest
    支持它。See Node自v8.5以来一直支持带有
    --实验模块
    标志的模块。即使没有.mjs扩展?@BielSimon是的,没有mjs扩展。您需要包中的
    “type”:“module”
    。json和Dan提到的标志。
    “type”:“module”
    仅从节点v12开始工作,但您可以使用
    节点-r esm
    您甚至不需要
    “type”:“module”
    (除非您以正式的节点方式做事)。如果您只使用
    -r esm
    。。。使用支持它的普通库(例如节点本身或Mocha),ES6模块“正常工作”。我得到“加载配置时出错-您似乎使用的是本机ECMAScript模块配置文件,只有异步运行Babel时才支持。”