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

使用Deno+TypeScript开发Discord机器人出现reflect-metadata导入错误如何解决

错误触发原因

Deno的ESM模块解析规则与Node.js不同,不支持无路径前缀的裸模块导入(比如直接写import "reflect-metadata"),所有导入路径必须是完整远程URL,或是带/、./、../前缀的相对/绝对路径。
你使用的unpkg源的discordx包是面向Node.js环境编译的版本,内部依赖reflect-metadata时用了Node.js支持的裸导入写法,不符合Deno的导入规范,因此触发路径校验报错。

解决方案

推荐使用discordx官方适配Deno环境的发布源配合导入映射配置,步骤如下:

  1. 新建项目根目录下的deno.json配置文件,开启装饰器语法支持,同时配置导入映射:
{
  "compilerOptions": {
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true
  },
  "imports": {
    "discordx": "https://deno.land/x/discordx@9.0.1/mod.ts",
    "reflect-metadata": "https://deno.land/x/reflect_metadata@v0.1.13/mod.ts"
  }
}
  1. 修改你的入口代码,在最顶部优先导入reflect-metadata依赖:
import "reflect-metadata";
import { Client } from "discordx";

const client: Client = new Client({
    intents: ["GUILDS", "GUILD_MESSAGES"],
});

console.log("done");
  1. 运行代码时添加Deno所需的权限参数:
    deno run --allow-net --allow-env 你的入口文件名.ts

完成以上配置后即可正常加载discordx及其依赖,完成开发环境初始化。

内容的提问来源于stack exchange,提问作者shestakov-dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:36:08