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
相关产品推荐
相关产品推荐

