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

Deno v1.44.4跨平台编译异常:macOS成功Linux x86报错

Deno跨平台编译类型错误:Linux下request.body.text()不存在

问题背景

两台机器均运行Deno v1.44.4(内置TypeScript 5.4.5),执行以下编译命令:

deno compile --output ../release/cobble --allow-env --allow-net --allow-read --allow-write --allow-run ../backend/server.ts && cd ../release/ && zip -r ../cobblequarry.zip *

出现平台不一致问题:

  • macOS X64平台编译正常
  • Linux X86平台编译失败,抛出TypeScript类型错误:

Check file:///home/codepleb/cobble-quarry/backend/server.ts
error: TS2339 [ERROR]: Property 'text' does not exist on type '{ (options: BodyOptions<"bytes">): BodyBytes; (options: BodyOptions<"form">): BodyForm; (options: BodyOptions<"form-data">): BodyFormData; (options: BodyOptions<...>): BodyJson; (options: BodyOptions<...>): BodyReader; (options: BodyOptions<...>): BodyStream; (options: BodyOptions<...>): BodyText; (options?: BodyOpt...'.
let command: string = await ctx.request.body.text();
~~~~
at file:///home/codepleb/cobble-quarry/backend/server.ts:124:52

此前适配Linux的方案在macOS无法编译,当前适配macOS的方案则在Linux报错,暂不确定是否为TypeScript版本问题。

解决方法

1. 替换为request.text()快捷方法

Deno的Request对象原生提供了text()快捷方法,无需先调用body(),直接绕过重载类型推断问题:

let command: string = await ctx.request.text();

2. 显式指定body类型参数

如果必须使用body()方法,显式传入类型参数让TypeScript明确返回类型:

let command: string = await ctx.request.body({ type: "text" }).text();

3. 升级Deno版本

该问题大概率是Deno v1.44.4的跨平台类型定义bug,升级到最新稳定版(如v1.45及以上)可修复这类平台一致性问题。

4. 临时跳过类型检查(不推荐)

若需紧急编译,可添加--no-check参数绕过TypeScript类型校验:

deno compile --no-check --output ../release/cobble --allow-env --allow-net --allow-read --allow-write --allow-run ../backend/server.ts && cd ../release/ && zip -r ../cobblequarry.zip *

注意:此方法会忽略所有类型错误,可能隐藏潜在问题,仅作临时应急使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 10:59:57