【问题标题】:NodeJS ReferenceError: require is not defined when using supports-color packageNodeJS ReferenceError:使用支持颜色包时未定义要求
【发布时间】:2021-08-24 10:57:52
【问题描述】:

我正在尝试使用 babel 设置 NodeJS 项目。 一切似乎都很好,但是当我导入包'supports-color'时出现以下错误:

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: C:\Users\me\Desktop\supports-color-test\node_modules\supports-color\index.js

这发生在我的主项目中,因此我创建了另一个项目以查看是否再次出现相同的错误。

以下是我的测试项目的文件。

index.js

import express from "express";
import supportsColor from "supports-color"; // When adding this module the error appears.

const server = express();

if (supportsColor.stdout.has16m) {
  console.log('terminal supports all colors');
}

server.listen(3000, () => {
  console.log('server is running');
})

这是 .babelrc.json 文件。除非我尝试在 index.js 中导入我的 supports-color 模块,否则它可以完成这项工作。

{
  "presets": [
    "@babel/preset-env"
  ],
  "plugins":[]
}

这是 package.json 的一部分,您可以在其中看到我是如何编译代码的。

"scripts": {
    "build": "babel src --out-dir dist",
    "prestart": "rimraf dist && npm run build",
    "start": "node ./dist/index.js",
  },

我真的不知道为什么这个错误不断出现。当 .babelrc.json 被删除并且我在 package.json 中使用 "type": "module" 时它确实可以工作,但是代码没有被编译为 CommonJS。所以这不是一个选择。

我也尝试过不同的 babel 配置文件,但似乎没有任何效果。

节点版本:14.16.1
NPM 版本:6.14.12

我使用的依赖项:

"dependencies": {
    "express": "^4.17.1",
    "supports-color": "^9.0.2",
    "@babel/cli": "^7.14.5",
    "@babel/core": "^7.14.6",
    "@babel/preset-env": "^7.14.5",
    "rimraf": "^3.0.2"
  }

如果需要更多信息,请告诉我。

【问题讨论】:

    标签: javascript node.js babeljs es6-modules


    【解决方案1】:

    好的,所以导入的模块正在引用 “C:/Users/me/AppData/Local/Microsoft/TypeScript/4.3/node_modules/@types/supports-color/index”。

    此文件说明以下内容:supports-color 8.1 的类型定义

    然后我从 npm 安装了 support-color 8.1.1,现在它似乎可以工作了。

    【讨论】:

      猜你喜欢
      • 2020-12-26
      • 2022-10-24
      • 1970-01-01
      • 2015-06-12
      • 2021-11-08
      • 2018-03-01
      • 1970-01-01
      • 2020-06-08
      • 2023-03-10
      相关资源
      最近更新 更多