2

我习惯于在 Windows 上发布 Azure WebApps,但现在我正在尝试将 ASP.NET Core 3(带有 NodeServices)部署到 Linux WebApp,并且收到以下错误消息:

InvalidOperationException: Failed to start Node process. To resolve this:.

[1] 确保 Node.js 已安装并且可以在 PATH 目录之一中找到。当前 PATH 环境变量是:/opt/dotnetcore-tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/site/wwwroot Make确保 Node 可执行文件位于这些目录之一中,或更新您的 PATH。

在 Windows WebApps 上,我有很多其他应用程序,一切都很好。

在 Kudu 上,我输入node -v了,输出是v12.13.0.

有人可以帮我吗?

非常感谢。

4

2 回答 2

4

经过长时间的研究和微软工程师https://github.com/caroe2014的协助,这是三个步骤的最终答案:

1) 启动.cs

    services.AddNodeServices(options =>
        {
          if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
          {
            options.ProjectPath = Path.GetFullPath("/home/site/wwwroot");
          }
        }
      );

2)我发现容器中不存在节点,因此在启动应用程序之前必须有一个脚本来安装和启动它。所以我有这个start1.cs文件:

#!/bin/bash

apt-get install curl
curl -sL https://deb.nodesource.com/setup_12.x | bash
apt-get install -y nodejs

set -e
export PORT=8080
export ASPNETCORE_URLS=http://*:$PORT
dotnet "Web.Identity.dll"

Web.Identity.dll 是我的应用程序的 dll。

3) 将启动命令设置为/home/site/wwwroot/start1.sh(在 Azure 门户 - 应用服务配置 - 或 Azure DevOps 上)。

就这样。

于 2020-01-19T01:18:14.223 回答
0

尝试在代码中提及路径,这是在 Startup.cs 中配置 NodeServices 的方式:

services.AddNodeServices(options =>
{
    options.ProjectPath = "Path\That\Doesnt\Exist";
});
于 2019-12-13T02:19:02.773 回答