Visual Studio Docker не работает на node.js, который не находится в пути, когда он - PullRequest
0 голосов
/ 26 апреля 2019

Я установил Docker на свой ПК - Docker Desktop - и создал git-репозиторий в Azure Devops для моего SPA (Aurelia).Я обнаружил, что вместо IISExpress для запуска проекта у меня есть «Docker».Я нажимаю «Docker», чтобы запустить его, и он проходит весь путь, а затем я получаю следующее исключение.Кажется достаточно простым, что у меня нет node.js в моем пути, за исключением того, что это .. Я гуглил это, и есть несколько вопросов по добавлению Node .. Поэтому я добавил его в пользовательские переменные .. Я добавил его вСистемные переменные.Затем я удалил все записи и переустановил Node .., который затем добавил узел к самому пути.Затем я перезапустил и снова запустил проект - сначала в IISExpress - успех - затем в Docker, и вы снова можете увидеть исключение .. Я понятия не имею, почему, когда Node находится на машине и в пути, и он все еще выбрасываетисключение ??

enter image description here

enter image description here

    System.AggregateException
  HResult=0x80131500
  Message=One or more errors occurred. (Failed to start Node process. To resolve this:.

[1] Ensure that Node.js is installed and can be found in one of the PATH directories.
    Current PATH enviroment variable is: C:\Windows\system32;C:\Windows;C:\Users\ContainerAdministrator\AppData\Local\Microsoft\WindowsApps;C:\Program Files\dotnet;C:\Users\ContainerUser\AppData\Local\Microsoft\WindowsApps
    Make sure the Node executable is in one of those directories, or update your PATH.

[2] See the InnerException for further details of the cause.)
  Source=System.Private.CoreLib
  StackTrace:
   at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
   at Microsoft.AspNetCore.Builder.WebpackDevMiddleware.UseWebpackDevMiddleware(IApplicationBuilder appBuilder, WebpackDevMiddlewareOptions options)
   at JobsLedgerAPI.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env) in C:\AURELIA\1. - JOBSLEDGER SPA\JobsLedgerSPA\JobsLedgerAPI\Startup.cs:line 44

Inner Exception 1:
InvalidOperationException: Failed to start Node process. To resolve this:.

[1] Ensure that Node.js is installed and can be found in one of the PATH directories.
    Current PATH enviroment variable is: C:\Windows\system32;C:\Windows;C:\Users\ContainerAdministrator\AppData\Local\Microsoft\WindowsApps;C:\Program Files\dotnet;C:\Users\ContainerUser\AppData\Local\Microsoft\WindowsApps
    Make sure the Node executable is in one of those directories, or update your PATH.

[2] See the InnerException for further details of the cause.

Inner Exception 2:
Win32Exception: The system cannot find the file specified

1 Ответ

0 голосов
/ 26 апреля 2019

Поскольку вы упомянули on my PC, я считаю, что для запуска приложения Node.js на вашем ПК требуется модуль iisnode .Его конфигурация в вашем web.config обеспечивает запуск процесса Node.js, и выполняется основной файл Node.exe (например, server.js / main.js / app.js) и весь жизненный цикл приложения.

Пример выглядит следующим образом:

    <handlers>
          <add name="iisnode" path="server.js" verb="*" modules="iisnode" />
        </handlers>
<!--...-->

    <iisnode
          nodeProcessCommandLine="&quot;%programfiles%\nodejs\node.exe&quot;" 
          interceptor="&quot;%programfiles%\iisnode\interceptor.js&quot;" />

Надеюсь, это поможет.Этот же модуль также помогает запускать приложение Node.js в Azure (в инфраструктуре докера также может использоваться тот же модуль).

Дополнительные ссылки: Установка iisnode в Windows

PS: Возможно, вам придется установить соответствующую версию модуля iisnode в соответствии с вашей версией IIS (Экспресс / обычная и т. Д.).

У меня 64-разрядная ОС Windows 7 с IIS 7.5.Я установил iisnode .После этого я следовал инструкциям, перечисленным на этой странице .Затем он загрузил мое приложение Node.js на http://localhost:82/.Вам также может потребоваться предоставить пользователю IIS_IUSRS надлежащие разрешения (READ) для папки, в которой вы размещаете веб-приложение Node.js, а также для его родительской папки (приветствуются новые приемы!).

Далее следует мой рабочий web.config из веб-приложения узла на localhost: 82.Пожалуйста, отредактируйте согласно вашей машине.

<configuration>
    <system.webServer>

        <!-- indicates that the server.js file is a node.js application
        to be handled by the iisnode module -->

        <handlers>
            <add name="iisnode" path="server.js" verb="*" modules="iisnode" />
        </handlers>

<globalModules>
    <add name="iisnode" image="C:\Program Files (x86)\iisnode\iisnode.dll" />
</globalModules>
        <rewrite>
            <rules>
                <rule name="sendToNode">
                    <match url="/*" />
                    <action type="Rewrite" url="server.js" />
                </rule>
            </rules>
        </rewrite>

    </system.webServer>
</configuration>

Пример Barebones server.js следует.Пожалуйста, установите Express для Node.js, если он еще не установлен.

var express = require('express');

var app = express();

app.get('/', function (req, res) {
    res.send('Express is working on IISNode!');
});

app.listen(process.env.PORT);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...