我只是try 在一个nestjs应用程序上运行一些集成测试,但我收到以下错误:

SyntaxError: Cannot use import statement outside a module

我在这个问题上花了很多时间,这个问题应该很容易解决,但我处理不了. 使用ESM而不是CommonJ的@nestjs/axios lib会出现此问题.在做了一些研究之后,我发现理论上我应该使用以下命令运行测试:

yarn node --experimental-vm-modules $(yarn bin jest)

但我所做的一切都不管用 我也不明白为什么要匹配这个文件,因为它在node_MODULES中 有人能帮我吗?

我的Jest配置:

"jest": {
        "moduleFileExtensions": [
            "js",
            "json",
            "ts"
        ],
        "rootDir": "",
        "preset": "ts-jest",
        "testRegex": ".spec.ts$",
        "transform": {
            "^.+\\.(t|j)s$": "ts-jest"
        },
        "coverageDirectory": "./coverage",
        "testEnvironment": "node",
        "globalSetup": "<rootDir>/tests/jest.setup.ts",
        "globalTeardown": "<rootDir>/tests/jest.teardown.ts"
    }

我的版本:

"@nestjs/axios": "^1.0.1",
"@types/jest": "^24.0.18",
"jest": "^26.0.0",
"ts-jest": "^26.5.5",
"typescript": "^4.2.3"

我已经try 将NODE_MODULES(这已经是JEST的默认行为)设置为transformIgnorePatterns,但不起作用.

我遇到这个错误的库是一个内部库(node_modules/@bank/auth/node_modules/@nestjs/axios/node_modules/axios/index.js:1),,这会是问题的原因吗?

推荐答案

这与jest和ts-jest将库视为ESM模块有关,这是因为Package.json是如何设置的.您应该能够将其添加到您的JEST配置中,并且不会有任何问题.

moduleNameMapper: {
    '^axios$': require.resolve('axios'),
},

这应该会强制jestnode_modules正确解析库

Node.js相关问答推荐

如何使用Express正确跟踪服务器应用程序上的所有传出的Node.js请求

如何修复PostgreSQL和NodeJS/NestJS应用程序之间的日期时间和时区问题?

如何在Sequelize with Postgres中将m:n关联表ID从整数迁移到UUID?

try 插入重复的邮箱时,mongoDB DuplicateKey 错误未定义

我的 MERN 网站一直告诉我我的一个函数不是一个函数

为什么 docker 容器内的应用程序无法访问它自己的 API 端点?

具有项目外部子路径导入的 Firebase 函数

如何在mongoose 聚合中执行全文搜索

module.exports=require('other') 和临时变量有什么区别?

如何使用来自前一阶段的另一个数组的聚合mongoose 在数组中添加字段

Discord.js V14 interaction.editReply 给出了一个无效的 webhook 令牌错误

解决并行保存到 mongodb

分块 WebSocket 传输

如何在 Node.js 中使用 chmod

如何使用 Node.js 将 base64 编码图像(字符串)直接上传到 Google Cloud Storage 存储桶?

为什么数组上的js映射会修改原始数组?

Node.js `--nolazy` 标志是什么意思?

Node.js 连接仅适用于本地主机

如何创建安全(TLS/SSL)Websocket 服务器

CORS 错误:预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段授权