Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js nestjs到azure windows应用程序服务-web.config设置_Node.js_Azure_Azure Web App Service_Nestjs - Fatal编程技术网

Node.js nestjs到azure windows应用程序服务-web.config设置

Node.js nestjs到azure windows应用程序服务-web.config设置,node.js,azure,azure-web-app-service,nestjs,Node.js,Azure,Azure Web App Service,Nestjs,从昨天开始,我一直在尝试将我的NestJSAPI部署到azure,但没有成功。起初,我试图将其推送到linux云服务计划中,并能够从vs代码中部署它,在azure日志中可以看到该应用程序已成功启动,但它不会从我的端点返回任何数据,经过一些挖掘后,我不断看到一些容器故障。我尝试了一段时间来解决这个问题,然后决定改为在windows应用程序服务上设置它 遵循以下指南:,我将我的nestjs应用程序升级到windows上的azure应用程序服务,但再次失败。我把那篇文章中的repo拉下来与我的比较,他

从昨天开始,我一直在尝试将我的NestJSAPI部署到azure,但没有成功。起初,我试图将其推送到linux云服务计划中,并能够从vs代码中部署它,在azure日志中可以看到该应用程序已成功启动,但它不会从我的端点返回任何数据,经过一些挖掘后,我不断看到一些容器故障。我尝试了一段时间来解决这个问题,然后决定改为在windows应用程序服务上设置它

遵循以下指南:,我将我的nestjs应用程序升级到windows上的azure应用程序服务,但再次失败。我把那篇文章中的repo拉下来与我的比较,他们在web.config中有指向index.js的nodejs应用程序的入口点。在我的nestjs应用程序中不存在index.js,我做了一些研究,发现在编译完所有内容后,nestjs应用程序的入口点是main.js。该示例项目和我的nestjs应用程序还有一个不同之处,即nestjs应用程序的main.js文件似乎位于dist文件夹中,而不是wwwroot路径的根目录下

我的nestjs应用程序显然没有现成的web.config,所以我以hello world repo为例创建了一个。我将iisnode路径更新为dist/main.js,将重写路径也更新为相同的路径/文件,因为这是我唯一能想到的事情

唯一的另一个通配符是我在azure中为网站\节点\默认\版本应用程序设置更改的节点版本号…我不确定我的nestjs应用程序应该更改什么。我当前的本地版本是12.16.2,但当我在azure上更改为该版本时,它不起作用

我不确定在这里还可以尝试什么——如果我能解决docker容器问题,我可以尝试回到linux,但这似乎是一条死胡同。我想,如果我能让这个web.config/version的东西正常工作,那么我可能会在windows上有更多的运气

main.js是否在dist文件夹中,我应该指向我的web.config?azure上有最高版本限制吗?还有什么我可能遗漏的吗

编辑:打开流日志后-我现在看到这个异常

SyntaxError:在严格模式下使用const。 在模块处编译(Module.js:434:25) at Object..js(module.js:464:10) 在Module.load(Module.js:353:31) at函数。_加载(module.js:311:12) at Module.require(Module.js:359:17) 根据需要(模块js:375:17) 反对。(D:\ProgramFiles(x86)\iisnode\interceptor.js:459:1) 在模块处编译(Module.js:446:26) at Object..js(module.js:464:10) 在Module.load(Module.js:353:31)


通过谷歌搜索,我发现旧版本的node(<4)经常出现这种异常。我已经远远超过了这个版本,并且将azure设置为远远超过这个版本。

我已经阅读了你关于nestjs部署的两篇文章


现在我认为无论你使用什么平台,它都不会成功。因为azure支持我们web应用的基本环境。尽管您的应用程序基于NodeJ,但当您运行
npm run start
时,实际上是运行
nest start
。基本环境不应支持
npmi-g@nestjs/cli
。因此,我建议您使用docker创建映像,然后部署。

我已经阅读了您关于nestjs部署的两篇文章


现在我认为无论你使用什么平台,它都不会成功。因为azure支持我们web应用的基本环境。尽管您的应用程序基于NodeJ,但当您运行
npm run start
时,实际上是运行
nest start
。基本环境不应支持
npmi-g@nestjs/cli
。因此,我建议您使用docker创建映像,然后部署。

我在一位朋友的帮助下解决了它。在azure cli中运行此命令可以使用linux设置解决问题

az webapp config set --resource-group myResourceGroup --name myAppServiceName --startup-file "npm run start:prod"

我在一个朋友的帮助下把它解决了。在azure cli中运行此命令可以使用linux设置解决问题

az webapp config set --resource-group myResourceGroup --name myAppServiceName --startup-file "npm run start:prod"

正如我在评论@RyanHill MSFT中所说,我在linux和windows下创建了一个应用程序,并通过ssh和cmd在门户上执行了
npm run start
,但没有成功,这表明nest命令无法执行,正如我在回答中所述。@Blair Holmes当我在kudu控制台中运行“npm run start”时,它成功启动应用程序。知道如何路由到“main.ts”文件吗,因为这是nest应用程序的起点。我在评论@RyanHill MSFT中说过同样的话,我在linux和windows下创建了一个应用程序,并通过ssh和cmd在门户上执行了
npm run start
,但没有成功,表明nest命令无法执行,正如我的回答中所述。@Blair Holmes当我在kudu控制台中运行“npm run start”时,它会成功启动应用程序。任何关于如何路由到“main.ts”文件的想法,因为这是nest应用程序的起点。