reactjs 有没有办法让next-auth在nextjs electron(我现在使用的是Nextron,但我对任何东西都持开放态度)应用程序中工作?

gkl3eglg  于 2023-06-05  发布在  React
关注(0)|答案(1)|浏览(588)

有没有办法让next-auth在electron js app中工作?因为我听说API Routes和特别是动态API Routes不适用于electron应用程序,因为在nextjs中electron使用'next export'进行生产构建。我在next-js中创建了一个项目,并使用next-auth与Azure-AD提供商进行身份验证(使用Microsoft帐户登录)。问题是,在开发时,electron应用程序中的一切都很好,但是一旦您创建了生产版本,动态路由就不会被调用。我试图寻找一个解决方案,但没有太多的讨论这个主题在互联网上。
我目前正在使用nextron,但我对任何事情都持开放态度,如果有的话。我唯一的限制是应用程序应该是“nextjs”。

lokaqttq

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 buildnext.config.js中使用output: 'export'out目录中生成输出,如下所示:

const nextConfig = {
 output: 'export',
}

module.exports = nextConfig

要在Electron中使用Next.js UI + API路由,而不是使用Nextron(这将您的应用程序限制为静态导出),您可以直接使用electron-builder并在package.json中设置build配置。下面提供了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并将package.json中的"build"对象更新为"build": "builder.config.js"
如果你想从头开始使用一个模板,你可以像这样使用这个最小的next.js examplenpx 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

相关问题