You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node+TypeScript中Chalk与Boxen模块导入错误求助

解决Node + TypeScript中ESM模块加载冲突问题

问题根源

boxen和chalk的最新版本是纯ESM模块,无法通过CommonJS的require()加载。你最初用module: commonjs编译TypeScript,生成的代码尝试用require()加载这些ESM模块,直接触发ERR_REQUIRE_ESM错误;后续切换ESM配置时,缺少关键的模块解析规则导致找不到包。

解决方案:切换项目为ESM格式

以下是一步到位的配置修改:

1. 更新package.json

添加"type": "module"告诉Node.js当前项目采用ESM模块规范,同时补充编译/启动脚本:

{
  "name": "module-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "build": "tsc",
    "start": "node dist/index.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@types/boxen": "^3.0.1",
    "@types/chalk": "^2.2.0",
    "@types/node": "^18.15.0",
    "typescript": "^5.0.0"
  }
}

2. 修正tsconfig.json

配置TypeScript输出ESM模块,并启用Node.js风格的模块解析,解决找不到包的问题:

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "ESNext",
    "moduleResolution": "node",
    "esModuleInterop": true,
    "strict": true,
    "skipLibCheck": true,
    "outDir": "./dist"
  },
  "include": ["index.ts"],
  "exclude": ["node_modules"]
}

3. 还原TypeScript代码的静态import

不用再用动态import(),ESM支持直接静态导入:

#!/usr/bin/env node

import fs from 'fs';
import path from 'path';

import boxen from 'boxen';
import chalk from 'chalk';

const inputFile = path.join(process.cwd(), 'package.json');
const outputFile = path.join(process.cwd(), 'version.text');

console.log(boxen('This is a box', { padding: 1 }));
console.log(chalk.red('This is red'));

try {
    const rawData = fs.readFileSync(inputFile, 'utf8');
    const packageDotJSON = JSON.parse(rawData);
    const buildVersion = packageDotJSON.version;
    fs.writeFileSync(outputFile, buildVersion, 'utf8');
    console.log('File written successfully');
} catch (err) {
    console.error(err);
}

4. 编译并运行

执行以下命令:

npm run build
npm start

备选方案:使用兼容CommonJS的旧版本

如果不想切换ESM,可以安装boxen和chalk的旧版本(同时支持CommonJS和ESM):

npm uninstall boxen chalk
npm install boxen@4 chalk@4

之后保持最初的module: commonjs配置即可正常运行,但不推荐长期使用旧版本,可能存在安全隐患。


内容的提问来源于stack exchange,提问作者johnwargo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 00:55:19