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

关于Deno项目模块导入方式的疑问及相关技术咨询

Deno模块导入优先级与常见问题解答

一、导入优先级的官方推荐顺序

你的猜测和官方推荐不符,当前Deno官方的推荐优先级为:

  1. JSR:Deno官方维护的新一代包注册表,专为TypeScript/ES模块设计,具备严格的发布规范、原生类型支持和跨环境兼容性,是当前首选。
  2. deno.land/x:早期的社区包托管平台,包由开发者主动提交,适合寻找Deno生态原生维护的模块。
  3. esm.sh:用于将npm包转译为标准ES模块,适配Deno环境,适合找不到JSR/deno.land/x版本的npm包。
  4. npm:通过npm:前缀直接导入原生npm包,适合必须使用npm特定依赖的场景。

二、具体疑问解答

1. deno.land/x的模块收录标准

deno.land/x的模块并非自动收录,而是由开发者主动提交,需满足以下核心条件:

  • 项目为开源状态,托管在GitHub、GitLab等公开代码平台;
  • 代码符合ES模块规范,能直接在Deno环境运行;
  • 提交者需为项目维护者或获得官方授权。

Express未出现在deno.land/x中,原因有两点:一是Express官方未主动提交该包;二是Express大量依赖Node.js专属API,虽Deno可兼容运行,但并非Deno生态的原生适配模块,社区也未有人主动提交适配后的版本。

2. esm.sh导入Hono CORS中间件的正确方式

你之前的路径缺少了文件后缀.ts,esm.sh需要严格对应npm包内的文件路径。npm上的Hono包中,CORS中间件的文件路径为middleware.ts,正确导入方式为:

import { cors } from 'https://esm.sh/hono@4.3.8/middleware.ts'

也可以直接从Hono主包中解构导入(部分版本支持):

import { Hono, cors } from 'https://esm.sh/hono@4.3.8'

3. JSR的用途及未找到Hono/Express的原因

JSR是Deno官方推出的跨环境包注册表,核心用途包括:

  • 原生支持TypeScript,无需额外安装类型定义包;
  • 提供严格的版本管理、包发布规范,确保包质量;
  • 支持包子集导出、自动树摇,优化打包体积;
  • 同时兼容Deno、Node.js和浏览器环境。

找不到Hono是因为它在JSR上的包名为@hono/hono,而非直接搜"Hono";Express未出现在JSR中,是因为它是Node.js专属框架,未适配JSR的ES模块规范,官方也未发布对应版本。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 18:51:05