自定义节点环境中意外的令牌导入

2024-03-26

我得到了SyntaxError: Unexpected token import当使用我的自定义类扩展时NodeEnvironment。当不使用自定义测试环境时,现代 JavaScript - ES 模块等可以正常工作。

我正在使用节点8.11.1和纱线1.6.0.

这是完整的错误:

$ jest --no-cache
FAIL  __tests__/math.js
  ● Test suite failed to run

    /home/user/workspace/web/jest-custom-environment-no-import/__tests__/_helpers_/environments/integration.js:1
    (function (exports, require, module, __filename, __dirname) { import NodeEnvironment from 'jest-environment-node';
                                                                  ^^^^^^

    SyntaxError: Unexpected token import

      at node_modules/jest-runner/build/run_test.js:31:29

这是我的.babelrc:

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": "current"
        },
        "shippedProposals": true
      }
    ]
  ]
}

And the jest我的一部分package.json:

"jest": {
  "testEnvironment": "./__tests__/_helpers_/environments/integration.js",
  "testPathIgnorePatterns": ["/node_modules/", "/_helpers_/"],
  "verbose": true
}

自定义环境:

import NodeEnvironment from 'jest-environment-node';

export default class IntegrationEnvironment extends NodeEnvironment {
  async setup() {
    await super.setup();
  }

  async teardown() {
    await super.teardown();
  }

  runScript(script) {
    return super.runScript(script);
  }
}

我还创建了一个GitHub 仓库 https://github.com/j-klassen/jest-custom-environment-no-import这说明了这个问题。


我使用创建了一个合理的解决方法esm https://www.npmjs.com/package/esm。我创建了一个加载 esm 的附加文件,该文件加载我的自定义 Jest 环境。

My package.json现在包含:

"jest": {
  "testEnvironment": "./__tests__/_helpers_/environments/integration.index.js",
  "testPathIgnorePatterns": ["/node_modules/", "/_helpers_/"],
  "verbose": true
}

文件./__tests__/_helpers_/environments/integration.index.js包含:

// eslint-disable-next-line no-global-assign
require = require('esm')(module);

module.exports = require('./integration').default;

./__tests__/_helpers_/environments/integration.js保持不变。

一个工作示例可以在欧洲安全管理分会 https://github.com/j-klassen/jest-custom-environment-no-import/tree/esm我原来的仓库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义节点环境中意外的令牌导入 的相关文章

随机推荐