繁体   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