我刚刚将 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"
}
}
]
]
};
我最终需要将其添加到我的 package.json 中
“测试”:“NODE_OPTIONS=--experimental-vm-modules npm exec jest”
“类型”:“模块”