Azure App Service上的节点如何启动?

时间:2018-07-06 02:53:58

标签: node.js azure azure-app-service-plans

我有一个Angular Universal应用程序,该应用程序将部署到Azure App Service(Windows)。

当应用程序在Windows 10 PC上本地运行时,它可以正常运行,但在云中,process.cwd()似乎与在本地运行时不同。这导致Express.js在某些视图文件中查找错误的位置。

pwc进程应基于我执行节点的方式,在我的情况下,我的package.json中有一个启动脚本,它执行"node dist/server.js"。但是我可以删除此脚本,Azure仍将启动我的应用程序。因此,我认为我的pwc问题的根源在于Azure如何启动我的节点应用程序。

不幸的是,Microsoft认为一些代码片段和一些John Papa视频足以为开发人员解决问题提供足够的文档。

问题

  1. 是否存在说明任何配置的文档或 App Service用于初始化我的节点应用程序的约定?哪里 它吗?

  2. 给出脚本"start": "node dist/server.js",为什么process.cwd()在本地主机和Azure App Service上不同?这两个地方的文件结构都相同。

const DIST_FOLDER = join(process.cwd(), 'dist');

app.set('views', join(DIST_FOLDER, 'browser'));

Error: Failed to lookup view "index" in views directory "D:\home\site\wwwroot\dist\dist\browser"

  • root
  • package.json
    • dist
      • server.js
      • 浏览器(客户端应用)
      • 服务器(服务器应用)

3 个答案:

答案 0 :(得分:2)

  1. 文档:并非详尽的指南,但这是我发现对MSDN forums有用的内容:
  

Windows Azure网站使用IISNode在IIS内部托管Node进程。实际上,为您的Node站点分配了一个命名管道,该管道可以接收传入的请求,而不是像在本地运行或托管自己时使用的TCP端口。

     

...

     

作为运行在Azure Web Apps上的node.js应用程序,需要使用server.js或app.js文件作为根目录中的入口,并带有web.config文件来控制iis

  1. 工作目录:使用web.config和iisnode运行server.js时,规则将重写目录以指向server.js所在的位置。这就是为什么它找不到子文件夹“ dist”的原因。

我必须将上面的行更改为此,以便它可以在Azure上运行:

append(names[:i], names[i+1:]...)

我发现重要的另一件事是使用“应用程序设置”中的 WEBSITE_NODE_DEFAULT_VERSION 为您的应用程序服务设置正确版本的节点。这是MDSN博客上的更多信息-NodeJs and NPM versions on Azure App Services

答案 1 :(得分:0)

由于我习惯于在Linux上托管Node应用程序,所以这完全让我无心。答案是...

请参阅web.config

答案 2 :(得分:0)

如果有人在这里发现自己,请将其放在您的server.ts文件中,以在本地和天蓝色工作。

array[i] <--> array[j]

非常感谢KayS的回答-真的很有帮助。