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

Deno代码中parse与serveHttp被标记弃用,如何修复?

修复Deno 1.42.1中废弃API的代码方案

以下是针对你提供的代码中parse和serveHttp废弃问题的修复版本,同时适配Deno最新API规范:

import { join } from "https://deno.land/std@0.207.0/path/mod.ts";

// 使用Deno内置的parseArgs替代废弃的std/flags parse
const flags = Deno.parseArgs(Deno.args, {
  string: ["port"],
  default: { port: 80 },
});

const __dirname = new URL(".", import.meta.url).pathname;
console.log(`File server running on http://localhost:${flags.port}/`);

// 使用Deno.serve替代废弃的listen+serveHttp组合
Deno.serve({ port: flags.port }, async (request) => {
  const url = new URL(request.url);
  const filepath = decodeURIComponent(url.pathname);
  // 使用path.join安全拼接路径,避免跨平台分隔符问题
  const fullPath = join(__dirname, "public", filepath);

  try {
    console.log(filepath);
    const file = await Deno.open(fullPath, { read: true });
    return new Response(file.readable);
  } catch {
    return new Response("404 Not Found", { status: 404 });
  }
});

关键修改说明

  • 替换废弃的parse:Deno 1.20+已内置Deno.parseArgs方法,无需再导入std/flags模块,参数格式与原方法兼容。
  • 替换废弃的serveHttp:Deno.serve是Deno官方推荐的HTTP服务器创建方式,自动处理连接监听、请求循环等逻辑,代码更简洁易维护。
  • 路径拼接优化:使用std/path/join替代字符串拼接,解决Windows/Linux路径分隔符不一致的问题。
  • 简化请求处理:将原有的嵌套异步循环逻辑整合到Deno.serve的请求处理器中,结构更清晰。

运行命令

执行代码时需要授予网络和文件读取权限:

deno run --allow-net --allow-read your-file-name.ts

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 07:45:27