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

Node.js 16+TypeScript环境下discord.js带类型导入报错如何解决?

解决方案

1. 优先使用TS专属混合导入语法

直接用TS兼容CommonJS包的导入写法,既保留完整类型提示,编译后也符合CommonJS运行规则,不会触发运行报错和eslint规则校验:

// 替换原来的import/require写法
import Discord = require('discord.js');
const { Client, Intents } = Discord;

// dotenv同样可以用该写法适配,或者保留原有import,搭配下方tsconfig配置即可
import dotenv = require('dotenv');

2. 补全tsconfig.json必选配置

在compilerOptions中添加以下配置,解决ES模块和CommonJS模块的互操作问题:

{
  "compilerOptions": {
    "target": "es2020",
    "module": "CommonJS", // 如果不需要输出ESM,直接换成CommonJS最稳妥,Node16原生支持
    "moduleResolution": "node",
    "esModuleInterop": true, // 允许ES模块导入CommonJS模块
    "allowSyntheticDefaultImports": true, // 允许没有默认导出的模块使用默认导入
    "skipLibCheck": true // 跳过第三方库的类型检查,避免依赖内部类型错误打断编译
  }
}

3. 若坚持使用ESM规范(package.json加"type": "module")

调整tsconfig配置适配Node原生ESM规则即可:

{
  "compilerOptions": {
    "target": "es2020",
    "module": "NodeNext",
    "moduleResolution": "NodeNext",
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "skipLibCheck": true
  }
}

配置后原来的import { Client, Intents } from 'discord.js'写法即可正常运行。

4. 异常问题排查

如果调整配置后仍然报minLength相关错误,执行以下操作重置依赖:

  • 确认当前Node版本 >= 16.9.0(discord.js v14的最低要求)
  • 删除项目下的node_modules文件夹、package-lock.json/yarn.lock文件
  • 重新执行npm install安装依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:45:07