如何在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);
错误原因解析
- 第一种写法错误:
export express, { Request, Response } from 'npm:express';不符合ES模块语法规范,ES模块不支持这种同时导出默认值和命名导出的简写形式,必须拆分或使用重命名语法处理。 - 第二种写法错误:
export express from 'npm:express';是无效语法,ES模块导出默认值的正确简写应为export { default as express } from 'npm:express';,但单独使用这种写法时,后续导出类型仍可能遇到解析问题。 - 第三种写法错误:提示
Request不存在,是因为直接用export { Request, Response } from 'npm:express';时,Deno对npm包的类型导出解析存在差异;先完整导入再导出,能让Deno提前正确加载类型定义,避免识别错误。
内容的提问来源于stack exchange,提问作者cacascacas
相关产品推荐
相关产品推荐

