有没有办法让下一个身份验证在电子js应用程序中工作?因为我听说 API 路由和特别动态的 API 路由不适用于电子应用程序,因为在 nextjs 中,电子使用“下一个导出”进行生产构建。 我在 next-js 中创建了一个项目,并使用 next-auth 与 Azure-AD 提供商进行身份验证(使用 Microsoft 帐户登录)。 问题是,在开发时,电子应用程序中的一切都很好,但是一旦您创建了生产版本,动态路由就不会被调用。 我尝试寻找解决方案,但互联网上没有太多关于此主题的讨论。
我目前正在使用 nextron,但如果有的话,我愿意接受任何事情。 我唯一的限制是应用程序应该是“nextjs”。
有没有办法让下一个身份验证在电子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+ 中,要在 Electron 中使用 Next.js UI + API 路由,而不是使用 Nextron(这会将您的应用程序限制为静态导出),您可以直接使用 并在
next export
已弃用,Next.js 不再需要它来输出已编译的 App。您可以配置next build
以在out
目录中使用output: 'export'
中的next.config.js
生成输出,如下所示:const nextConfig = { output: 'export', } module.exports = nextConfig
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) 集成 .