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

使用Deno Fresh自定义处理器示例代码遇Unterminated regexp literal错误

问题:Fresh框架中使用自定义处理器出现语法解析错误的原因?

从Fresh官方文档的自定义处理器章节获取的示例代码如下:

import { Handlers } from "$fresh/server.ts";

export const handler: Handlers = {
  async GET(_req, ctx) {
    const resp = await ctx.render();
    resp.headers.set("X-Custom-Header", "Hello");
    return resp;
  },
};

export default function AboutPage() {
  return (
    <main>
      <h1>About</h1>
      <p>This is the about page.</p>
    </main>
  );
}

运行时出现如下错误:

error: Uncaught (in promise) TypeError: The module's source code could not be parsed: Unterminated regexp literal at file:///D:/QC%20supplements/Code/Apps/T%E1%BA%A1o%20v%C3%A0%20r%C3%BAt%20g%E1%BB%8Dn%20link%20UTM/Web/routes/index.ts:14:17

        <h1>About</h1>
                  ~~~~
  const manifest = (await import(toFileUrl(join(dir, "fresh.gen.ts")).href))
                    ^
    at async dev (https://deno.land/x/fresh@1.6.5/src/dev/dev_command.ts:38:21)
    at async file:///D:/QC%20supplements/Code/Apps/T%E1%BA%A1o%20v%C3%A0%20r%C3%BAt%20g%E1%BB%8Dn%20link%20UTM/Web/dev.ts:8:1
Watcher Process failed. Restarting on file change...

错误原因

这不是bug,是文件后缀名使用错误导致的:

  • 代码中包含JSX语法(<main>、<h1>这类标签),但文件后缀是.ts
  • Deno和Fresh框架默认只会在.tsx后缀的文件中解析JSX语法,.ts文件会被当作普通TypeScript文件处理,此时JSX的<>会被误识别为正则表达式的开始,从而抛出"未终止的正则表达式"错误

解决方法

将该路由文件的后缀从.ts改为.tsx即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 04:31:26