有没有办法让next-auth在nextjs电子(我现在使用Nextron,但我对任何东西都开放)应用程序中工作?

问题描述 投票:0回答:2

有没有办法让下一个身份验证在电子js应用程序中工作?因为我听说 API 路由和特别动态的 API 路由不适用于电子应用程序,因为在 nextjs 中,电子使用“下一个导出”进行生产构建。 我在 next-js 中创建了一个项目,并使用 next-auth 与 Azure-AD 提供商进行身份验证(使用 Microsoft 帐户登录)。 问题是,在开发时,电子应用程序中的一切都很好,但是一旦您创建了生产版本,动态路由就不会被调用。 我尝试寻找解决方案,但互联网上没有太多关于此主题的讨论。

我目前正在使用 nextron,但如果有的话,我愿意接受任何事情。 我唯一的限制是应用程序应该是“nextjs”。

reactjs next.js electron electron-builder next-auth
2个回答
7
投票

有没有办法让下一个身份验证在电子js应用程序中工作?

是的,至少有一种方法可以让下一个身份验证在使用 Electron.js 的应用程序中工作。

API 路由和特别动态的 API 路由不适用于电子应用程序,因为在 nextjs 中,电子使用“下一个导出”进行生产构建。

不正确。您所描述的是特定于 Nextron 的构建工作方式的行为。 Nextron 的构建命令在其

next export 脚本中使用 
nextron-build.ts
,仅导出应用程序的
renderer
/ UI 的 HTML、CSS、JS。它对于静态网站或单页应用程序 (SPA) 很有用,但对于需要 Node.js(或其他)后端来服务或处理 API 路由(例如 Auth.js (next-auth) 的 Azure-AD 身份验证提供程序)的应用程序不适用您正在使用的。

注意:在 Next.js v13.3.0+ 中,

next export

 已弃用,Next.js 不再需要它来输出已编译的 App。您可以配置 
next build
 以在 
out
 目录中使用 
output: 'export'
 中的 
next.config.js
 生成输出,如下所示:

const nextConfig = { output: 'export', } module.exports = nextConfig

要在 Electron 中使用 Next.js UI + API 路由,而不是使用 Nextron(这会将您的应用程序限制为静态导出),您可以直接使用

electron-builder

 并在 build
 中设置 
package.json
 配置。下面提供了 
package.json
 中所需更改的最小示例:

... "scripts": { "dev": "npm run build && electron .", "build-renderer": "next build renderer", "build": "npm run build-renderer", "dist": "npm run build && electron-builder", }, "devDependencies": { ... "electron": "^13", "electron-builder": "^23.0.3", }, "build": { "asar": true, "files": [ "main", "renderer/out" ] } ...
通过上述内容,对于生产构建,您将运行:

npm run dist

如果您想进一步自定义生产版本,您可以创建一个

builder.config.js

 并将 
"build"
 中的 
package.json
 对象更新为 
"build": "builder.config.js"

如果您想使用模板从头开始,您可以使用这个最小的

next.js 示例,如下所示:npx create-next-app --example with-electron YOUR_APP_NAME


如果您想要一个完整的示例作为升级现有应用程序的参考,这里有

跨平台 Electron.js + Next.js 应用程序的代码存储库,具有 API、动态路由和 Next-Auth (Auth.js) 集成 .


0
投票
有人在nextron的生产环境中成功使用next-auth吗?如果已经成功实现,请务必与我分享一个例子。我将非常感激。

© www.soinside.com 2019 - 2024. All rights reserved.