当前位置: 首页 > 知识库问答 >
问题:

如何在8.0版本中使用“目标:“无服务器”正确实现具有N个ext.js的无服务器SSR

曹乐意
2023-03-14

Next.js8.0刚刚引入了一个新的目标:“无服务器”配置设置,在这篇博文中有所描述。我设置了一个基本的Hello world应用程序(这里)来测试它。将. Next/serverless/page/index.js的输出复制粘贴到Google Cloud Function(相当于AWS Lambda)并让它调用渲染(),如上一篇博文所述。

我遇到的问题是,页面本身呈现良好,但随后它尝试在与lambda相同的域中获取静态资产(脚本文件),这当然不起作用,因为除了lambda脚本之外什么都没有。

我的想法是使用Next.js的这个新功能来实现微前端架构。页面/中的每个页面都可以有自己的开发团队/生命周期,并在后端进行相应的扩展。这是这个功能的主要卖点之一,对吗?

解决这个问题的标准方法是什么?我需要为静态资产设置一个单独的服务器吗?然后将两者都放在负载均衡器或某种路由器后面?如果是这样,这是否违背了使用它来开发微前端的目的,因为静态资产将包括每个页面的“index.js”、“about.js”和脚本文件,并且需要在任何页面更新时重新部署?

希望我说的有道理。感谢您的帮助!

共有2个答案

乌璞瑜
2023-03-14

为了让next.js使用你的谷歌云功能,你需要创建一个next.config.js(我想你已经做了)并添加assetprefix

const isProd = process.env.NODE_ENV === 'production'
module.exports = {
    target: 'serverless',
    assetPrefix: isProd ? 'https://yourRegion-projectId.cloudfunctions.net/functionName' : '',
}

在此之后,npm将再次构建和部署。

Google Cloud功能的免费调用是2,000,000。Firebase是125,000。

更新-Firebase免费调用现在为2,000,000/月

韩嘉胜
2023-03-14

我需要为静态资产设置单独的服务器吗?

我是新来的nextjs,但是是的,我相信这就是你需要的。

由于您使用的是GCP,您可能希望尝试Firebase,因为它包括Google Cloud Functions(FB Function是单独打包和销售的Google Cloud Function)和满足您需求的静态托管,包括您提到的详细信息。

另一个问题是nextjs的这个新的无服务器特性似乎更面向AWS Lambda,因为它单独打包了函数。您可能已经知道,但无论如何我都会注意到GCP是面向“项目”的,并且您项目中的所有功能共享一个切入点。我不会再详细介绍,因为这不是您所问的问题,但这个流行的SO问题会介绍如何做到这一点。

编辑:我写了这个,然后记得这个FB样本。。。基于旧版本的nextjs,在Firebase上托管nextjs应用程序的另一种方式。

 类似资料:
  • Next.js8.0刚刚引入了一个新的配置设置,这篇博文对此进行了描述。我设置了一个基本的hello world应用程序(这里)来测试它。将的输出复制粘贴到Google Cloud函数(相当于AWS Lambda),并让它调用,如上面的博文所述。 我遇到的问题是,页面本身呈现良好,但它试图获取与lambda相同的域中的静态资产(脚本文件),这当然不起作用,因为那里除了lambda脚本之外什么都没有

  • 我可以在我自己的电脑上使用这个程序,但是我不能在服务器上使用。 服务器使用最高权限管理员打开程序。 具有的服务器WCF HTTP激活功能。NET4。5号门开着。 服务器endpoint地址使用"http://localhost",如下所示 endpoint地址="http://localhost"绑定="basicHttpBind"bindingConfiguration="NewBinding0

  • 问题内容: 我有一个要配置的现有http服务器。我已经将导入文件包括在内,并且已经在运行http服务器: 当我尝试访问http:// localhost:8080 / debug / pprof /时, 我得到了。 这就是在本地计算机上使用时得到的: 与远程客户端相同: 问题答案: 文档中未明确提及它,而仅将其处理程序注册到。 从来源: 如果您未使用默认的多路复用器,则只需向您要使用的任何多路复用

  • 问题内容: 我正在尝试使游戏服务器在一段时间后更新。 当我这样做时,python在其中一个内核上消耗了100%的计算能力。我真的不明白为什么会这样,如果可能的话如何解决。 问题答案: 在每次轮询之间插入一个10毫秒的毫秒,否则您的循环将持续轮询时间,而不会释放CPU的电源。 编辑:更好,仅在需要时等待一次。如果发生严重的CPU过载,则等待时间可能为负,在这种情况下,可以立即触发2个操作。并不断地重

  • 问题内容: 我正在尝试使用http客户端通过为单个主机设置最大连接来访问服务器 HttpParams httpParam = httpclient.getParams(); HttpConnectionParams.setSoTimeout(httpParam,SOCKET_TIMEOUT); 那就是我们使用连接池来实现http持久性。 我们偶尔会收到此错误: 有谁知道如何解决这个问题? 我们也将

  • 从谷歌我来顶部知道这可能是JDK和tomcat版本的问题。我解决了那个问题,但仍然坚持启动服务器。我添加了icu4j最新版本的罐子,但它仍然不能工作。