Nanoid4 中的 codecept 错误 [ERR_REQUIRE_ESM]:ES 模块的 require()

twe*_*ypi 16 typescript es6-modules nanoid

我更新到 nanoid4 并开始收到以下错误:

[ERR_REQUIRE_ESM]:不支持 ES 模块 [...]/node_modules/nanoid/index.js 的 require()。相反,将 [...]/signup_test.ts 中的 index.js 的 require 更改为动态 import(),该动态 import() 在所有 CommonJS 模块中都可用

这是它抱怨的导入:

import { customAlphabet } from 'nanoid'
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的 tsconfig 文件:

{
    "ts-node": {
      "files": true
    },
    "compilerOptions": {
      "jsx": "react-jsx",
      "types": [
        "node",
        "codeceptjs"
      ],
      "experimentalDecorators": true,
      "lib": [
        "dom",
        "dom.iterable",
        "esnext"
      ],
      "allowJs": true,
      "skipLibCheck": true,
      "strict": false,
      "forceConsistentCasingInFileNames": true,
      "noEmit": true,
      "esModuleInterop": true,
      "module": "ES6",
      "moduleResolution": "node",
      "resolveJsonModule": true,
      "incremental": true,
      "target": "ESNext",
    },
    "include": [
      "next-env.d.ts",
      "**/*.ts",
      "**/*.tsx"
    ],
    "exclude": [
      "node_modules"
    ]
  }
Run Code Online (Sandbox Code Playgroud)

不确定为什么它坏了

小智 30

如果您使用其他版本的nanoid. 例如:

npm uninstall nanoid
npm install nanoid@3.3.4
Run Code Online (Sandbox Code Playgroud)

如果没有,请尝试tsconfig.json根据更改您的一些内容。


Jon*_*cio 18

出现错误“[ERR_REQUIRE_ESM]:不支持 require()”是因为您正在导入的包已转换为仅 ESM 包,这意味着无法再使用 require() 导入该包。使用 npm 我 nanoid@2.1.11