【问题标题】:Jest gives ReferenceError: require is not definedJest 给出 ReferenceError: require is not defined
【发布时间】:2021-03-29 03:34:32
【问题描述】:

我是 Angular 的新手,过去 3 天找不到解决方案,我使用的是 npm@7.0.1 和 node@v15.0.0,我还在 node 和 npm 的 LTS 版本中降级和测试,我得到了相同的结果错误。

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

// For a detailed explanation regarding each configuration property, visit:
// https://jestjs.io/docs/en/configuration.html
const tsconfig = require("./tsconfig.json")
const moduleNameMapper = require("tsconfig-paths-jest")(tsconfig)
module.exports = {
  collectCoverage: true,
  reporters: [
    "default",
    [
      "jest-junit",
      {
        "suiteName": "jest tests",
        "outputDirectory": ".",
        "outputName": "junit.xml",
        "uniqueOutputName": "false",
        "classNameTemplate": "{classname}-{title}",
        "titleTemplate": "{classname}-{title}",
        "ancestorSeparator": " › ",
        "usePathForSuiteName": "true"
      }
    ]
  ],
  globals: {
    'ts-jest': {
      diagnostics: {
        ignoreCodes: [151001]
      },
      tsconfig: '<rootDir>/tsconfig.spec.json',
      stringifyContentPathRegex: '\\.html$',
      astTransformers: [
        'jest-preset-angular/build/InlineFilesTransformer',
        'jest-preset-angular/build/StripStylesTransformer'
      ]
    }
  },
  transform: {
    '^.+\\.(ts|js|html)$': 'ts-jest',
    "^.+\\.js$": "babel-jest"
  },
  setupFilesAfterEnv: ['<rootDir>/src/setup-jest.ts'],
  testEnvironment: 'jest-environment-jsdom-thirteen',
  moduleFileExtensions: ['ts', 'html', 'js', 'json'],
  moduleNameMapper,
  transformIgnorePatterns: ['node_modules/(?!@ngrx)'],
  snapshotSerializers: [
    'jest-preset-angular/build/AngularSnapshotSerializer.js',
    'jest-preset-angular/build/HTMLCommentSerializer.js'
  ],
};

详细的错误信息如下

ReferenceError: require is not defined
    at file:///C:/nad/projekte/a/a-ui/jest.config.js:3:18
    at ModuleJob.run (node:internal/modules/esm/module_job:146:23)
    at async Loader.import (node:internal/modules/esm/loader:165:24)
    at async readConfigFileAndSetRootDir (C:\nad\projekte\a\a-ui\node_modules\jest-config\build\readConfigFileAndSetRootDir.js:126:32)
    at async readConfig (C:\nad\projekte\a\a-ui\node_modules\jest-config\build\index.js:217:18)
    at async readConfigs (C:\nad\projekte\a\a-ui\node_modules\jest-config\build\index.js:406:26)
    at async runCLI (C:\nad\projekte\a\a-ui\node_modules\@jest\core\build\cli\index.js:230:59)
    at async Object.run (C:\nad\projekte\a\a-ui\node_modules\jest-cli\build\cli\index.js:163:37)
npm ERR! code 1
npm ERR! path C:\nad\projekte\a\a-ui
npm ERR! command failed
npm ERR! command C:\Windows\system32\cmd.exe /d /s /c jest

【问题讨论】:

  • 您是否尝试导入 import tsconfig from "./tsconfig.json" 之类的模块而不是 const tsconfig = require("./tsconfig.json")

标签: javascript angular npm jestjs


【解决方案1】:

终于找到了解决办法,将我的 jest.config.js 文件重命名为 jest.config.cfs,解决了这个问题。请在stackoverflow thread中找到解释。

【讨论】:

  • .cfs 不是 NodeJS 的有效扩展。这与完全删除文件具有相同的效果。您是要使用链接到的页面中列出的 .cjs 扩展名,还是确认删除 jest.config.js 解决了问题?
猜你喜欢
  • 2020-06-14
  • 1970-01-01
  • 2019-09-29
  • 2022-12-01
  • 2013-08-14
  • 2017-02-25
  • 2019-12-02
  • 2017-08-15
  • 1970-01-01
相关资源
最近更新 更多