Babel.js Import和require都在我的node.js应用程序中的jest测试文件中工作

atmip9wb  于 9个月前  发布在  Babel
关注(0)|答案(1)|浏览(127)

我刚刚在我的node.js应用程序中安装了jest。我可以很好地运行npm test,直到我试图从另一个文件导入一些东西。
我有一个名为channel.test.js的文件,我尝试了以下操作:

import { emptyChannelSortingQueue } from './channels.js'
import * as channel from './channels.js'
var channel = require('./channels.js')

字符串
在我的package.json中,我已经有了"type": "module"
我仍然得到这个错误:
Jest遇到了意外的令牌
Jest无法解析文件。例如,当您的代码或其依赖项使用非标准JavaScript语法时,或者当Jest未配置为支持此类语法时,就会发生这种情况。
开箱即用的Jest支持Babel,它将用于根据Babel配置将文件转换为有效的JS。
默认情况下,transformers会忽略“node_modules”文件夹。
你可以这样做:

  • 如果您尝试使用ECMAScript模块,请参阅https://jestjs.io/docs/ecmascript-modules了解如何启用它。
  • 如果您正在尝试使用TypeScript,请参阅https://jestjs.io/docs/getting-started#using-typescript
  • 要转换某些“node_modules”文件,可以在配置中指定自定义的“transformIgnorePatterns”。
  • 如果你需要一个自定义的转换,在你的配置中指定一个“transform”选项。
  • 如果你只是想模拟你的非JS模块(例如二进制资产),你可以用“moduleNameMapper”配置选项将它们剔除。

你可以在文档中找到这些配置选项的更多细节和示例:
https://jestjs.io/docs/configuration
有关自定义转换的信息,请参见:
https://jestjs.io/docs/code-transformation
详细信息:
/Users/alishahome/Documents/Software_Engineering/megara/bot/src/utils/channels.js:1
({“Object.":function(module,exports,require,__dirname,__filename,jest){import {
^^^^^^
语法错误:无法在模块外部使用导入语句
我试着在我的dockerfile中修改这一行

RUN npm install --quiet


收件人:

RUN npm install --quiet --experimental-vm-modules


我也试着把它添加到我的package.json中:

"jest": {
    "testEnvironment": "node",
    "moduleFileExtensions": ["js", "mjs"],
    "transform": {},
    "moduleNameMapper": {}
  }


我还尝试安装babel/jest并将其放入babel.config.js文件中:

module.exports = {
  presets: [
    [
      "@babel/preset-env",
      {
        targets: {
          node: "current"
        }
      }
    ]
  ]
};

rsl1atfo

rsl1atfo1#

我最终需要将其添加到我的package.json中

"test": "NODE_OPTIONS=--experimental-vm-modules npm exec jest"
"type": "module"

字符串

相关问题