Import 或 require 都在我的 Node.js 应用程序中的笑话测试文件中工作

问题描述 投票:0回答:1

我刚刚将 jest 安装到我的 Node.js 应用程序中。我可以很好地运行

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。

默认情况下,变压器会忽略“node_modules”文件夹。

您可以执行以下操作:

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

您将在文档中找到这些配置选项的更多详细信息和示例:
https://jestjs.io/docs/configuration
有关自定义转换的信息,请参阅:
https://jestjs.io/docs/code-transformation

详情:

/用户/alishahome/Documents/Software_Engineering/megara/bot/src/utils/channels.js:1
({“对象。”:函数(模块,导出,要求,__目录名,__文件名,笑话){导入{
^^^^^^

语法错误:无法在模块外部使用 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"
        }
      }
    ]
  ]
};
node.js ecmascript-6 jestjs babeljs require
1个回答
0
投票

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

“测试”:“NODE_OPTIONS=--experimental-vm-modules npm exec jest”

“类型”:“模块”

© www.soinside.com 2019 - 2024. All rights reserved.