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

如何在Deno的deps.ts中正确导出express等npm模块?

在Deno的deps.ts中正确导出npm模块(以Express为例)

正确的导出写法

在deps.ts中通过完整导入再导出的方式,实现Express默认实例和类型的统一导出:

// deps.ts
import express, { Request, Response } from "npm:express";

// 导出默认实例(适配业务文件的默认导入),同时导出类型
export { express as default, Request, Response };

在业务文件app.ts中即可按你习惯的方式导入使用:

// app.ts
import express, { Request, Response } from "./deps.ts";

// 正常编写业务逻辑
const app = express();
app.get("/", (req: Request, res: Response) => {
  res.send("Hello Deno!");
});

app.listen(3000);

错误原因解析

  1. 第一种写法错误:export express, { Request, Response } from 'npm:express';不符合ES模块语法规范,ES模块不支持这种同时导出默认值和命名导出的简写形式,必须拆分或使用重命名语法处理。
  2. 第二种写法错误:export express from 'npm:express';是无效语法,ES模块导出默认值的正确简写应为export { default as express } from 'npm:express';,但单独使用这种写法时,后续导出类型仍可能遇到解析问题。
  3. 第三种写法错误:提示Request不存在,是因为直接用export { Request, Response } from 'npm:express';时,Deno对npm包的类型导出解析存在差异;先完整导入再导出,能让Deno提前正确加载类型定义,避免识别错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:30:49