typescript Jest -语法错误:不能在带有@nestjs/axios的模块外部使用import语句

kiayqfof  于 2023-01-27  发布在  TypeScript
关注(0)|答案(1)|浏览(310)

我只是尝试在一个nestjs应用上运行一些集成测试,但我得到了以下错误:
SyntaxError: Cannot use import statement outside a module
我花了很多时间在这个问题上,这个问题应该很容易解决,但我不能处理它。这个问题发生在@nestjs/axios lib上,它使用ESM而不是CommonJs。经过一些研究,我发现理论上我应该使用以下命令运行测试:
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"

我已经尝试过将node_modules(这已经是jest的默认行为)放在transformIgnorePatterns设置中,但它不起作用。
我遇到这个错误的库是一个内部库(node_modules/@bank/auth/node_modules/@nestjs/axios/node_modules/axios/index.js:1),这可能是问题的原因吗?

watbbzwu

watbbzwu1#

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

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

这将强制jestnode_modules正确解析库

相关问题