【问题标题】:Node on Azure App Service how does it start up?Azure 应用服务上的节点如何启动?
【发布时间】:2018-07-06 02:53:57
【问题描述】:

我有一个 Angular Universal 应用程序,我正在部署到 Azure 应用程序服务 (Windows)。

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

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

不幸的是,微软认为一些代码 sn-ps 和几个 John Papa 视频足以让开发人员解决问题。

问题

  1. 是否存在解释任何配置或 应用服务用于初始化我的节点应用的约定?哪里 是吗?

  2. 鉴于脚本 "start": "node dist/server.js" 为什么我的本地主机上的 process.cwd() 与 Azure 应用服务不同?两个地方的文件结构是一样的。

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"

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

【问题讨论】:

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


    【解决方案1】:
    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 上工作:

    const DIST_FOLDER = process.cwd();
    

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

    【讨论】:

      【解决方案2】:

      由于我习惯于在 Linux 上托管 Node 应用程序,因此我完全忘记了这一点。答案是……

      查看 web.config

      【讨论】:

      【解决方案3】:

      如果其他人发现自己在这里,请将其放入您的 server.ts 文件中,以便在本地和 azure 上工作

      import * as fs from 'fs';
      const distFolderExists = fs.existsSync(join(process.cwd(), 'dist'));
      const DIST_FOLDER = distFolderExists ? join(process.cwd(), 'dist') : process.cwd();
      

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

      【讨论】:

        猜你喜欢
        • 2012-08-23
        • 1970-01-01
        • 2015-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-09
        • 1970-01-01
        • 2020-02-23
        相关资源
        最近更新 更多