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

为何Deno控制台部署失败,但同脚本在Dash平台运行正常?

迁移Deno脚本至新Deno Deploy平台的修复方案

你的代码在新Deno Deploy平台部署失败,核心原因是新平台不兼容旧的底层HTTP监听API,同时存在异步处理、配置类型错误等问题,以下是修复后的完整代码及修改说明:

关键问题与对应修改

  • 新Deno Deploy不再支持Deno.listen和Deno.serveHttp,必须使用官方推荐的Deno.serveAPI创建HTTP服务
  • 不能硬指定端口8080,平台会自动分配端口
  • save2MySQL调用未加await,导致异步操作未被正确处理
  • DATABASE_PORT需转为数字类型,原代码直接传入字符串会引发MySQL连接错误

修复后的完整代码

/* eslint-disable */
import "https://deno.land/std@0.181.0/dotenv/load.ts";

import { Client } from "https://deno.land/x/mysql/mod.ts";

// 初始化MySQL客户端,处理端口类型转换
const client = await new Client().connect({
  hostname: Deno.env.get("DATABASE_HOST"),
  username: Deno.env.get("DATABASE_USER"),
  db: Deno.env.get("DATABASE_NAME"),
  password: Deno.env.get("DATABASE_PASS"),
  port: Deno.env.get("DATABASE_PORT") ? parseInt(Deno.env.get("DATABASE_PORT")!) : 3306,
});

let counter = 0;

// 使用Deno.serve适配新平台的HTTP服务API
Deno.serve(async (request) => {
  counter++;
  const url = new URL(request.url);

  switch (url.pathname) {
    case "/": {
      const sentence = url.searchParams.get("sentence");
      // 等待数据库操作完成,避免Promise未处理
      const sqlStatus = await save2MySQL(sentence);
      console.log(sqlStatus);
      return new Response("Data processed", { status: 200 });
    }

    default:
      return new Response(counter.toString(), { status: 200 });
  }
});

async function save2MySQL(sentence: string | null) {
  console.log("Attempting to save data to the database");
  if (!sentence) {
    return "No sentence provided";
  }
  // 补充实际数据库插入逻辑(替换为你的表名)
  const result = await client.execute(
    "INSERT INTO your_table (sentence) VALUES (?)",
    [sentence]
  );
  return `Saved successfully, affected rows: ${result.affectedRows}`;
}

部署额外注意事项

  1. 在Deno Deploy控制台确认DATABASE_HOST、DATABASE_USER、DATABASE_NAME、DATABASE_PASS、DATABASE_PORT等环境变量已正确配置
  2. 确保你的MySQL数据库允许Deno Deploy的IP段访问(云数据库需在安全组中添加平台出站IP)
  3. 入口文件设置为main-esm.ts后,可手动推送一次代码到GitHub触发重新部署

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 13:09:52