Azure&Web3项目问题总结(Next.js)
(这是我在微软的第一个Web3项目,也是最后一个Web3项目,但总算也有一些收获)辛苦了几个月,第一个Web3项目终于要落地了。同时也陆陆续续收到了项目上的各种反馈,跟着开发团队的大佬搞了两个通宵,又是一把心酸血泪史。
先说项目技术栈:
1、前端使用React框架Nextjs + TypeScript,混合模式SSR渲染
2、区块链使用长安链,但并非公链,是以长安链技术为基础的区块链服务
3、云服务使用Azure,前端应用和区块链节点都部署在Azure云服务中
目前问题主要集中在前端应用部署到Azure服务时遇到的:
1、Azure Static Web Apps 部署遇到100M的问题
问题原因:
目前Azure Static Web Apps是预览版,如果部署Hybrid Nextjs Application,会有100M大小的限制,具体内如可以查看这里
Next.js support on Azure Static Web Apps
补充说明:
在解决这个问题的时候,我们在GitHub上发现也有人提了同样的问题,并给出了解决方案
Max app size seems different than reported by Oryx · Issue #769 · Azure/static-web-apps
在 package.json
文件中修改 build
为:
1 | "build": "next build && rm -rf ./.next/cache" |
但这种解决方案仅限于缓存目录超过100M,如果前端项目目录本身就超过了100M,那这种办法也无法解决问题。
解决办法:
这个限制无论使用GitHub Action,还是用Azure DevOps Pipeline都无法绕过去,必须保证项目大小小于100M,如果实在无法缩减项目大小,而且又必须以Hybrid方式部署Nextjs,可以改用Azure Web Apps
2、Azure Web Apps 部署缓慢的问题
问题原因:
在通过GitHub Action部署项目时,我们发现在 build
阶段完成编译后上传artifact的速度极其缓慢,导致整个项目的部署时间超过了2个小时,截图是我创建的一个空白项目,编译后生成了14481个文件,上传artifact所需的时间已经超过了10分钟
解决办法:
修改GitHub Action yml文件,将build
阶段的 name: npm install, build, and test
挪到 deploy
阶段,如下:
1 | name: Build and deploy Node.js app to Azure Web App - nextjs |
这样修改完成之后,部署时间缩短到了3分钟左右
3、Nextjs部署完成之后,页面浏览错误
问题原因:
这个错误很神奇,我找了很久没有发现问题,最后还是请教了项目上的开发大佬,猜测是Azure Web Apps 对Nextjs的优化问题。在 package.json
中会定义Nextjs四个阶段的脚本 :dev
build
start
lint
,但在执行并没有执行成功,导致Application Error
1 | "scripts": { |
解决办法:
next
命令加上全局路径
1 | "scripts": { |