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

Express.js集成Auth.js报错:renderToString不是函数

问题解决:Auth.js集成Express时出现renderToString is not a function错误

核心问题分析

你遇到的TypeError: (0 , import_preact_render_to_string.renderToString) is not a function错误,结合重定向到/api/auth/error?error=Configuration,主要由三个原因导致:

  • 缺失Auth.js页面渲染依赖(preact相关包)
  • 关键配置项AUTH_SECRET为空,触发Auth.js配置校验失败
  • GitHub Provider未传入必要的客户端ID/密钥参数

分步解决方案

1. 填充并生成合法的AUTH_SECRET

Auth.js要求必须配置AUTH_SECRET用于加密会话,空值会直接触发配置错误。

  • 生成密钥:在终端执行以下命令生成随机密钥
    openssl rand -hex 32
    
  • 更新.env.local:将生成的密钥填入AUTH_SECRET,同时确保GitHub的ID和密钥也已填写
    AUTH_SECRET="生成的32位十六进制密钥"
    AUTH_GITHUB_ID="你的GitHub OAuth应用ID"
    AUTH_GITHUB_SECRET="你的GitHub OAuth应用密钥"
    AUTH_URL="http://localhost:3001/api/auth"
    

2. 安装缺失的渲染依赖

Auth.js v5+ 使用Preact渲染内置页面,你的项目可能未安装相关依赖,导致renderToString无法找到:

npm install preact preact-render-to-string

3. 修正GitHub Provider配置

你当前的代码中仅导入了GitHub Provider,但未传入必要的客户端凭证,需要在配置中补充:
修改server.ts中的providers数组:

providers: [
  GitHub({
    clientId: process.env.AUTH_GITHUB_ID!,
    clientSecret: process.env.AUTH_GITHUB_SECRET!
  })
],

4. 优化TypeScript模块解析配置

在tsconfig.json中添加moduleResolution配置,确保CommonJS环境下能正确解析ES模块依赖:

{
  "compilerOptions": {
    "target": "es2016",                           
    "module": "commonjs",                    
    "outDir": "./dist",                            
    "esModuleInterop": true,          
    "forceConsistentCasingInFileNames": true,  
    "strict": true,
    "skipLibCheck": true,
    "moduleResolution": "node" // 新增这一行
  }
}

验证修复

重启服务器后:

  • 访问/status应该返回{ ok: true },不再触发Auth重定向
  • 访问/api/auth/signin应该能正常加载GitHub登录页面

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 22:53:14