NextAuth.js

NextAuth.js 可以配合 Vite + vite-plugin-ssr 使用

Examples

process.env.NEXTAUTH_URL

要在客户端访问环境变量,例如 process.env.NEXTAUTH_URL,我们可以使用 vite.config.js#definevite.config.js#envPrefix

不要将 NEXTAUTH_ 添加到 envPrefix,它会泄露 NEXTAUTH_SECRET

另请参考:

我们可以像往常一样在服务器(例如 Express.js)代码使用 process.env。 (因为服务器代码不被 Vite 处理。)

getSession() 的 fetch polyfill

为了在服务器端使用 NextAuth.js 的 getSession(),我们需要全局安装一个 fetch polyfill。

如果我们只在客户端使用 getSession(),或者如果我们使用原生支持 fetch() 的 Node v18,则不需要 polyfill。

我们可以使用 node-fetch 来修补全局对象

// server.js

// 只在服务器上安装 polyfill(例如 Express.js)。
// 浏览器已经实现了 `fetch()`,在浏览器端加载 polyfill 会很浪费。

// 如果你的 `package.json#type` 不是 `"module"`,请使用 node-fetch@2 而非 node-fetch@3。
// 或者其他的 `fetch()` polyfill, 例如 `cross-fetch`
import fetch, { Headers, Request, Response } from "node-fetch";

if (!globalThis.fetch) {
  globalThis.fetch = fetch;
  globalThis.Headers = Headers;
  globalThis.Request = Request;
  globalThis.Response = Response;
}

另请参考