有没有办法让next-auth在electron js app中工作?因为我听说API Routes和特别是动态API Routes不适用于electron应用程序,因为在nextjs中electron使用'next export'进行生产构建。我在next-js中创建了一个项目,并使用next-auth与Azure-AD提供商进行身份验证(使用Microsoft帐户登录)。问题是,在开发时,electron应用程序中的一切都很好,但是一旦您创建了生产版本,动态路由就不会被调用。我试图寻找一个解决方案,但没有太多的讨论这个主题在互联网上。
我目前正在使用nextron,但我对任何事情都持开放态度,如果有的话。我唯一的限制是应用程序应该是“nextjs”。
1条答案
按热度按时间lokaqttq1#
有没有办法让next-auth在electron js app中工作?
是的,至少有一种方法可以让next-auth在使用electron.js的App中工作。
API路由和特别是动态API路由不适用于electron应用程序,因为在nextjs中,electron使用'next export'进行生产构建。
不是这样的。你所描述的是特定于Nextron的构建如何工作的行为。Nextron的build命令在其
nextron-build.ts
脚本中使用next export
,该脚本仅导出应用程序renderer
/ UI的HTML,CSS,JS。它适用于静态网站或单页应用(SPA),但不适用于需要Node.js(或其他)后端来提供或处理API路由的应用,例如您正在使用的Auth.js(next-auth)的Azure-AD auth提供程序。注意:在Next.js v13.3.0+中,
next export
已被弃用,Next.js不再需要next export
来输出编译后的App。您可以配置next build
在next.config.js
中使用output: 'export'
在out
目录中生成输出,如下所示:要在Electron中使用Next.js UI + API路由,而不是使用Nextron(这将您的应用程序限制为静态导出),您可以直接使用
electron-builder
并在package.json
中设置build
配置。下面提供了package.json
所需更改的最小示例:使用上面的代码,对于生产构建,您可以运行:
npm run dist
。如果要进一步自定义生产版本,可以创建
builder.config.js
并将package.json
中的"build"
对象更新为"build": "builder.config.js"
。如果你想从头开始使用一个模板,你可以像这样使用这个最小的next.js example:
npx create-next-app --example with-electron YOUR_APP_NAME
如果你想要一个完整的例子供你参考,以升级你现有的应用程序,这里的a code repo for a cross-platform Electron.js + Next.js App with API, dynamic routes and Next-Auth (Auth.js) integration。