У меня есть решение ASP.NET Core с интерфейсом React. Теперь у меня проблема: я не могу выпустить код, используя обычное окно выпуска внутри Visual Studio. Я публикую в веб-приложении внутри веб-приложений Azure, и оно отлично работает для всех других моих решений, созданных таким же образом.
Код отлично работает локально, и я могу без проблем запускать npm install
локально.
Очевидно, ошибка возникает из-за того, что какой-то файл не найден при публикации. В моем файле проекта я занимался отладкой и обнаружил, что это проблема:
<Target Name = "PublishRunWebpack" AfterTargets = "ComputeFilesToPublish">
<!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
<Exec Command = "npm install" />
<Exec Command = "node node_modules/webpack/bin/webpack.js --config webpack.config.vendor.js --env.prod" />
<Exec Command = "node node_modules/webpack/bin/webpack.js --env.prod" />
<!-- Include the newly-built files in the publish output -->
<ItemGroup>
<DistFiles Include = "wwwroot\dist\**" />
<ResolvedFileToPublish Include = "@(DistFiles->'%(FullPath)')" Exclude = "@(ResolvedFileToPublish)">
<RelativePath>%(DistFiles.Identity)</RelativePath>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</ResolvedFileToPublish>
</ItemGroup>
</Target>
Ошибка в Visual Studio:
Severity Code Description Project File Line Suppression State
Error The command "npm install" exited with code 9009. Likvido.CreditRisk C:\Users\MYNAME\Documents\Github\Likvido.CreditRisk\Likvido.CreditRisk\Likvido.CreditRisk\Likvido.CreditRisk.csproj 75
Если я закомментирую первые три строки (npm install
и два веб-пакета), я могу опубликовать решение, но, очевидно, без работы с JavaScript.
Есть идеи, как это решить? И хотя бы как лучше отладить?
Визуальная ошибка в Visual Studio:
Файл журнала, указанный в графическом интерфейсе пользователя:
09/04/2018 11.07.03
System.AggregateException: One or more errors occurred. ---> System.Exception: Publish failed due to build errors. Check the error list for more details.
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at Microsoft.VisualStudio.Web.Publish.PublishService.VsWebProjectPublish.<>c__DisplayClass40_0.<PublishAsync>b__2()
at System.Threading.Tasks.Task`1.InnerInvoke()
at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.ApplicationCapabilities.Publish.ViewModel.ProfileSelectorViewModel.<RunPublishTaskAsync>d__88.MoveNext()
---> (Inner Exception #0) System.Exception: Publish failed due to build errors. Check the error list for more details.<---
===================
Так что это было неудобно, но потенциально полезно для будущих гуглеров.
Основная проблема была довольно простой: это был новый компьютер, на котором не было установлено Node.js
(или NPM
). Это делает сообщение об ошибке весьма полезным: node
не найден!
Решение простое: установите Node.js
, убедитесь, что он находится в вашем PATH, и перезагрузите компьютер. Тогда вы решите эту проблему.
У меня возникла та же проблема, что и при установке Node, когда была открыта Visual Studio. Затем я перезапустил VS, и все заработало.
Это сработало для меня. Я скачал его здесь: nodejs.org/en вместо использования диспетчера пакетов.
У меня была такая же проблема даже после загрузки и установки nodejs. моя проблема решена после перезапуска визуальной студии благодаря @iltafkhalid.
В качестве дополнительного пункта: я установил инструменты node.js из установщика Visual Studio и продолжал получать эту ошибку, предполагая, что она должна быть установлена, и что-то еще происходит. Ну, он все еще не был установлен. Я не мог найти его нигде на своем компьютере, и он не работал, пока я не загрузил и не установил node.js с веб-сайта и не перезагрузил свой компьютер.