【问题标题】:weird Nodejs: I never use `require()`, but got an error奇怪的Nodejs:我从不使用`require()`,但出现错误
【发布时间】:2022-01-21 07:11:14
【问题描述】:

请看Issue

我很确定包和我都没有使用require(),但仍然有一个错误告诉我不要使用require()

这太奇怪了!

有错误的代码:

import stripAnsi from 'strip-ansi';

错误:

Error [ERR_REQUIRE_ESM]: require() of ES Module C:\Users\13931\Desktop\ucon\node_modules\strip-ansi\index.js from C:\Users \13931\Desktop\ucon\src\utty.ts not supported.
Instead change the require of index.js in C:\Users\13931\Desktop \ucon\src\utty.ts to a dynamic import() which is available in all commonjs modules.

而最令人困惑的是: import 语句在任何地方都有帮助,除了导入 strip-ansi!

【问题讨论】:

  • 没有看到您的代码,我不确定我们应该如何帮助您。
  • @msanford 非常感谢,但这不是我的问题。
  • 您是否可能使用 TypeScript 进行编码并为 ES5 设置编译目标或生成require() 而不是使用import?我建议你看看你生成的 JS 代码,看看它在做什么。
  • @jfriend00 你是对的!我的天啊!我从我忘记的地方复制了 tsconfig.json,它有 module:"commonjs" !!!!!!非常感谢!!!!!!

标签: node.js typescript import require es6-modules


【解决方案1】:

确保您的 TypeScript 配置设置为合适的 Javascript 目标版本和支持并将使用 import 的合适目标模块类型,以便 TypeScript 编译器生成使用 import 的代码。如果没有,那么它将生成使用require() 的代码。

您始终可以查看已编译的(纯 Javascript)代码并查看它生成的内容。

【讨论】:

    【解决方案2】:

    是的,我没有使用任何require()。 但是我弄错了

    module:"commonjs"
    

    在 tsconfig.json 中!

    所以 ts 将 import 更改为 require...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-30
      • 2013-05-05
      • 2012-10-05
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 2010-11-05
      • 2012-05-05
      相关资源
      最近更新 更多