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

使用Deno Deploy部署时报Deno.stat is not a function错误如何解决

问题原因

你代码的报错核心是Deno Deploy 运行环境不支持直接访问传统本地文件系统:你本地用deployctl运行时可以读取本地磁盘的public目录,但部署到Deno Deploy后,平台默认不会将项目静态目录挂载到运行时可访问的文件路径下,同时你用Deno.cwd()拼接路径的写法也和Deno Deploy的运行时工作目录结构不兼容,自然会出现找不到文件的错误。

修复步骤
  1. 首先在项目根目录新增/编辑deno.json文件,通过include字段声明需要打包到部署环境的静态资源路径:
{
  "include": [
    "**/*.ts",
    "public/**/*"
  ]
}
  1. 修改你的服务代码,去掉Deno.cwd()路径拼接,直接使用相对路径指定静态资源根目录,如果你用oak框架的context.send,修改后代码如下:
import { Application } from "./deps.ts";
const app = new Application();

// 静态资源服务
app.use(async (context) => {
  await context.send({
    root: "./public",
    index: "index.html",
  });
});

addEventListener("fetch", app.fetchEventHandler());

如果上述方案依然有问题,也可以改用Deno标准库的serveDir实现静态服务,兼容性更强:

import { Application, Context } from "./deps.ts";
// serveDir来自Deno标准库http模块,已提前导入到deps.ts中
import { serveDir } from "./deps.ts";

const app = new Application();

app.use(async (ctx: Context) => {
  ctx.response = await serveDir(ctx.request, {
    fsRoot: "./public",
    index: "index.html"
  });
});

addEventListener("fetch", app.fetchEventHandler());
本地验证方法

修改完代码后,本地运行时添加--include参数指定要包含的静态目录,即可模拟部署后的运行行为:
deployctl run --include=public 你的入口文件名.ts

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:18:03