从昨天开始,我一直在尝试将 Nestjs api 部署到 azure,但没有成功。起初,我试图将其推送到 Linux 云服务计划,并能够从 vs code 部署它,在 azure 日志中看到该应用程序已成功启动,但它不会从我的端点返回任何数据,经过一番挖掘后,我不断看到一些容器故障。我尝试对此进行故障排除一段时间,然后决定尝试将其设置在 Windows 应用程序服务上。
遵循本指南:https://learn.microsoft.com/en-us/azure/app-service/app-service-web-get-started-nodejs,我将 Nestjs 应用程序推送到 Windows 上的 azure 应用程序服务,但它再次不起作用。我拉下了那篇文章中的存储库,将其与我的进行比较,它们在 web.config 中为指向 index.js 的 Nodejs 应用程序提供了入口点。我的 Nestjs 应用程序中不存在该 index.js,我做了一些研究,发现编译所有内容后,nestjs 应用程序的入口点是 main.js。该示例项目和我的 Nestjs 应用程序还有另一个区别,即 NestJS 应用程序的 main.js 文件似乎位于 dist 文件夹中,而不是位于 wwwroot 路径的根目录中。
我的 Nestjs 应用程序显然不包含开箱即用的 web.config,因此我使用 hello world 存储库作为示例创建了一个 web.config。我将 iisnode 路径更新为 dist/main.js 并将重写路径也更新为同一路径/文件,因为这是我唯一能想到做的事情。
唯一的其他通配符是我在天蓝色中为 WEBSITE_NODE_DEFAULT_VERSION 应用程序设置更改的节点版本号...我不确定我的 Nestjs 应用程序应该是什么。我当前的本地版本是12.16.2,但是当我将版本更改为azure上的版本时,它不起作用。
我不知道这里还能尝试什么——如果我能解决 docker 容器问题,我会很好地尝试回到 linux,但这似乎是一个死胡同。我想如果我能让这个 web.config / version 的东西正常工作的话,我可能会更幸运地继续沿着 Windows 路线前进。
main.js 是否位于 dist 文件夹中,我应该将 web.config 指向该文件夹? azure 有最大版本限制吗?还有什么我可能想念的吗?
编辑:打开流日志后 - 我现在看到这个异常
语法错误:在严格模式下使用 const。
在 Module._compile (module.js:434:25)
在 Object..js (module.js:464:10)
在 Module.load (module.js:353:31)
在 Function._load (module.js:311:12)
在 Module.require (module.js:359:17)
在需要时(module.js:375:17)
在对象。 (D:\Program Files (x86)\iisnode\interceptor.js:459:1)
在 Module._compile (module.js:446:26)
在 Object..js (module.js:464:10)
在 Module.load (module.js:353:31)
经过一番谷歌搜索后,我发现旧版本的节点(
我在朋友的帮助下解决了这个问题。在 azure cli 中运行此命令可以使用 Linux 设置解决问题。
az webapp config set --resource-group myResourceGroup --name myAppServiceName --startup-file "npm run start:prod"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)