Приложение, опубликованное на IIS (Ip), не знает о моих node_modules - PullRequest
0 голосов
/ 26 июня 2019

У меня есть приложение asp.net core 2.2, которое я опубликовал на своем IIS, и могу получить к нему доступ с http://10.23.44.105:891/"some path "(я изменил ip). В этом приложении я установил то, что мне нужно, с помощью npm, и яиспользовать кучу таких вещей, как requirejs, multiselect, bootstrap и т. д. Проблема в том, что, очевидно, приложение не знает о моих node_modules.

Я предполагаю, что это что-то, связанное с webconfig, или мне нужно сказатьприложение, для которого также необходимо опубликовать node_modules.

Это мой файл webconfig после публикации

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\ProductManagement_WebApplication.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
    </system.webServer>
  </location>
</configuration>
<!--ProjectGuid: 1bbb425b-0e64-410d-86e5-142483a5f132-->

, и это консоль со всеми ошибками

GET http://10.23.44.105:891/node_modules/bootstrap/dist/css/bootstrap.min.css net::ERR_ABORTED 404 (Not Found)
BaseProducts:8 

GET http://10.23.44.105:891/node_modules/kendo-ui/styles/kendo.bootstrap-v4.min.css net::ERR_ABORTED 404 (Not Found)
BaseProducts:13 

GET http://10.23.44.105:891/node_modules/codemirror/lib/codemirror.css net::ERR_ABORTED 404 (Not Found)
BaseProducts:14

 GET http://10.23.44.105:891/node_modules/codemirror/theme/material.css net::ERR_ABORTED 404 (Not Found)
BaseProducts:16 

GET http://10.23.44.105:891/node_modules/bootstrap-multiselect/dist/css/bootstrap-multiselect.css net::ERR_ABORTED 404 (Not Found)
BaseProducts:34

 GET http://10.23.44.105:891/node_modules/requirejs/require.js net::ERR_ABORTED 404 (Not Found)
init.js:2 

Uncaught ReferenceError: requirejs is not defined
    at init.js:2

 Uncaught ReferenceError: require is not defined
    at BaseProducts:245

 Uncaught ReferenceError: require is not defined

РЕДАКТИРОВАТЬ: Было бы полезно кое-что, кроме npm install. К сожалению, мне пришлось изменить некоторые js-файлы в node_modules из-за requirejs, поэтому npm install не будет лучшим решением. Мне нужно что-то, чтобы заставить node_modules быть в опубликованныхприложение также.

Ответы [ 2 ]

1 голос
/ 26 июня 2019

Нашли решение . В csproj проекта, который вы хотите опубликовать, вы должны указать, что вы хотите включить node_modules. По умолчанию (я думаю) они не включены. Таким образом, чтобы включить их, вы должны поместить это туда

`<ItemGroup>
         <Content Include="wwwroot\node_modules\**"   
             CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>

Примечание : заменить путь вашим путем к node_modules

ВНИМАНИЕ . Вам может понадобиться удалить другие ссылки на node_modules оттуда. Пример:

    <Content Include="wwwroot\node_modules\codemirror\addon\dialog\dialog.css" />
    <Content Include="wwwroot\node_modules\codemirror\addon\display\fullscreen.css" />
    <Content Include="wwwroot\node_modules\codemirror\addon\fold\foldgutter.css" />
    <Content Include="wwwroot\node_modules\codemirror\addon\hint\show-hint.css" />
    <Content Include="wwwroot\node_modules\codemirror\addon\lint\lint.css" />
    <Content Include="wwwroot\node_modules\codemirror\addon\merge\merge.css" />

или вместо «Содержимое» - «Нет»


    <None Include="wwwroot\node_modules\codemirror\addon\lint\json-lint.js" />
    <None Include="wwwroot\node_modules\codemirror\addon\lint\lint.js" />
    <None Include="wwwroot\node_modules\codemirror\addon\lint\yaml-lint.js" />
    <None Include="wwwroot\node_modules\codemirror\addon\merge\merge.js" />
    <None Include="wwwroot\node_modules\codemirror\addon\mode\loadmode.js" />
    <None Include="wwwroot\node_modules\codemirror\addon\mode\multiplex.js" />
    <None Include="wwwroot\node_modules\codemirror\addon\mode\multiplex_test.js" />

Я удалил их и поставил первым, и это сработало.

0 голосов
/ 26 июня 2019

Вы можете скопировать необходимые node_modules в папку wwwroot приложения (например, с помощью скрипта gulp, связанного как действие «после сборки».

Содержимое wwwroot включено в выходные данные публикации и доступно позже в виде статических файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...