我有一个发布在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也发布在已发布的应用程序上。
答案 0 :(得分:1)
找到了解决方案。在要发布的项目的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" />
我删除了这些内容,然后放第一件事就可以了。
答案 1 :(得分:0)
您可以将所需的node_modules复制到应用程序的wwwroot文件夹中(例如,将gulp脚本绑定为“构建后”操作。
wwwroot的内容包含在发布输出中,以后可以作为静态文件进行访问。