簡體   English   中英

TS-JEST Mongoose/MongoDB 與 ESM 不兼容

[英]TS-JEST Mongoose/MongoDB incompatibility with ESM

我正在嘗試讓 Node Express/Typescript 應用程序使用 Mongoose(在 Mongodb 中拖動)與 Jest 一起使用。 我知道錯誤是什么,我只是找不到正確的配置來開玩笑和 mongodb 玩得很好。

無論我嘗試什么,我都會得到:

chart-review-server2.0/node_modules/mongodb/src/bson.ts:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){import type {
                                                                                      ^^^^^^

    SyntaxError: Cannot use import statement outside a module

或者如果我嘗試在我的 jest.config.js 配置中使用 transformIgnorePatterns 從配置中排除它:transformIgnorePatterns: ['node_modules/(?,(mongodb))'],我得到:

RangeError: Maximum call stack size exceeded

      at Object.get [as ObjectId] (node_modules/mongodb/src/bson.ts:38:3)
      at Object.get [as ObjectId] (node_modules/mongodb/src/bson.ts:38:3)...

我的 jest.config.js 文件如下所示:

module.exports = {
  preset: "ts-jest",
  testEnvironment: "node",
  transformIgnorePatterns: [`node_modules/(?!(mongodb))`],
  transform: {
    '^.+\\.ts?$': 'ts-jest'
  },
  moduleDirectories: [ "node_modules", "src", "test"],
  verbose: true,
  testMatch: ["<rootDir>/test/*(*.)+(test).+(ts)"],
  setupFiles: [
    'dotenv/config'
  ],
};

我的 tsconfig.json 看起來像這樣:

{
  "compilerOptions": {
    "lib": [
      "es6"
    ],
    "module": "commonjs",
    "target": "es5",
    "rootDirs": [
      "./src"
    ],
    "outDir": "./dist",
    "baseUrl": "./src",
    "moduleResolution": "node",
    "esModuleInterop": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "resolveJsonModule": true,
    "skipLibCheck": true,
    "allowJs": true,
    "downlevelIteration": true,
    "isolatedModules": false,
    "noEmit": true

  },
  "include": [
    "src/**/*.ts",
    "test/**/*.ts"
  ],
  "exclude": [
    "node_modules"
  ],
  "types": [
    "node"
  ],
  "typeRoots": [
    "node_modules/@types"
  ]
}

提前感謝您的任何回復,並閱讀本文。

注釋掉moduleDirectories上的 moduleDirectories 為我解決了這個問題。 @jimmythecode 的所有功勞,請參閱他的答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM