簡體   English   中英

在 IIS (Ip) 上發布的應用程序不知道我的 node_modules

[英]Application published on IIS (Ip) doesn't know about my node_modules

我在 IIS 上發布了一個 asp.net core 2.2 應用程序,可以使用http://10.23.44.105:891/ “某些路徑”(我修改了 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 之外的東西會有所幫助。 遺憾的是,由於 requirejs,我不得不修改 node_modules 中的一些 js 文件,因此 npm install 不是最佳解決方案。 我需要一些東西來強制 node_modules 也在發布的應用程序上。

找到了解決方案 在您要發布的項目的 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" />

我刪除了那些並把第一件事和它的工作。

您可以將所需的 node_modules 復制到應用程序的 wwwroot 文件夾(例如,將 gulp 腳本綁定為“構建后”操作。

wwwroot 的內容包含在發布輸出中,稍后可以作為靜態文件訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM