在ASP.Net Core 2.2(从2.1升级)上运行的原始代码没有在package.json中启动。
https://github.com/TrilonIO/aspnetcore-angular-universal/blob/master/package.json
当更新到ASP.Net Core 3.0时,它正在寻找启动脚本。
为什么要立即开始?
---> System.AggregateException:发生一个或多个错误。 (国家预防机制 脚本“开始”退出而未指示Angular CLI已 监听请求。错误输出为:npm ERR!缺少脚本: 开始
这是日志中的内容:
0信息,如果以ok 1冗长cli [ '/project/.nvm/versions/node/v10.8.0/bin/node',1详细cli
'/project/.nvm/versions/node/v10.8.0/bin/npm',1个详细的cli'run', 1个详细cli'start',1个详细cli'-',1个详细cli
'--port',1冗长的cli'54294'] 2信息,使用npm@6.4.1 3信息 使用node@v10.8.0 4详细堆栈错误:缺少脚本:开始4 运行时的详细堆栈 (/project/.nvm/versions/node/v10.8.0/lib/node_modules/npm/lib/run-script.js:155:19) 4个详细堆栈 /project/.nvm/versions/node/v10.8.0/lib/node_modules/npm/lib/run-script.js:63:5 4个详细堆栈 /project/.nvm/versions/node/v10.8.0/lib/node_modules/npm/node_modules/read-package-json/read-json.js:115:5 4个详细堆栈 /project/.nvm/versions/node/v10.8.0/lib/node_modules/npm/node_modules/read-package-json/read-json.js:418:5 在checkBinReferences_的4详细堆栈 (/project/.nvm/versions/node/v10.8.0/lib/node_modules/npm/node_modules/read-package-json/read-json.js:373:45) 最终有4个详细堆栈 (/project/.nvm/versions/node/v10.8.0/lib/node_modules/npm/node_modules/read-package-json/read-json.js:416:3) 然后是4个详细堆栈 (/project/.nvm/versions/node/v10.8.0/lib/node_modules/npm/node_modules/read-package-json/read-json.js:160:5) ReadFileContext的4个详细堆栈。 (/project/.nvm/versions/node/v10.8.0/lib/node_modules/npm/node_modules/read-package-json/read-json.js:332:20) ReadFileContext.callback的4个详细堆栈 (/project/.nvm/versions/node/v10.8.0/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:78:16) FSReqWrap.readFileAfterOpen上的4个详细堆栈(按oncomplete) (fs.js:233:13)5详细的cwd /project/Dropbox/Workspace/MyProject/src/MyProject.Web/ClientApp 6 详细的Darwin 19.0.0 7详细argv “ /project/.nvm/versions/node/v10.8.0/bin/node” “ /project/.nvm/versions/node/v10.8.0/bin/npm”“运行”“开始”“-” “ --port”“ 54294” 8详细节点v10.8.0 9详细npm v6.4.1 10错误 缺少脚本:开始11详细退出[1,true]
这是控制台上报告的内容:
---> System.IO.EndOfStreamException:尝试读取末尾的内容 流。在 Microsoft.AspNetCore.SpaServices.AngularCli.AngularCliMiddleware.StartAngularCliServerAsync(String sourcePath,字符串npmScriptName,ILogger记录器)---内部结尾 异常堆栈跟踪--- Microsoft.AspNetCore.SpaServices.AngularCli.AngularCliMiddleware.StartAngularCliServerAsync(String sourcePath,字符串npmScriptName,ILogger记录器)---内部结尾 异常堆栈跟踪--- System.Threading.Tasks.Task
1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task
1.get_Result()位于 Microsoft.AspNetCore.SpaServices.AngularCli.AngularCliMiddleware。<> c.b__2_0(Task {{1)} 2.InnerInvoke() 在System.Threading.Tasks.Task。<> c。<。cctor> b__274_0(Object obj)在 System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(线程 threadPoolThread,ExecutionContext executeContext,ContextCallback 回调,对象状态) ---从上一个引发异常的位置开始的堆栈跟踪- System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(线程 threadPoolThread,ExecutionContext executeContext,ContextCallback 回调,对象状态) System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot,Thread threadPoolThread)-内部结束 异常堆栈跟踪--- System.Threading.Tasks.Task1 task) at System.Threading.Tasks.ContinuationResultTaskFromResultTask
1.get_Result()位于 Microsoft.AspNetCore.SpaServices.Extensions.Util.TaskTimeoutExtensions.WithTimeout [T](Task1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task
1 baseUriTask,CancellationToken applicationStoppingToken,布尔Proxy404s)位于 Microsoft.AspNetCore.Builder.SpaProxyingExtensions。<> c__DisplayClass2_0。d.MoveNext() ---从上一个引发异常的位置开始的堆栈跟踪- Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.HandleException(HttpContext 上下文,ExceptionDispatchInfo edi)失败: Microsoft.AspNetCore.Server.Kestrel [13] 连接ID“ 0HLS17GG2QFU7”,请求ID“ 0HLS17GG2QFU7:00000001”:客户端未处理的异常引发 应用。 System.AggregateException:发生一个或多个错误。 (发生一个或多个错误。(退出NPM脚本“开始” 指示Angular CLI正在监听请求。错误 输出为:npm ERR!缺少脚本:开始
答案 0 :(得分:0)
当更新到ASP.Net Core 3.0时,它正在寻找启动脚本。
我认为,对于集成的angular + asp.net核心项目,仅从dotnet run
开始总是必要的。
您需要配置spa.UseAngularCliServer(npmScript: "start");
才能成角度运行
app.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseAngularCliServer(npmScript: "start");
}
});
将首先调用命令
npm start -- --port {dynamic_port}
npm查找您的package.json文件,如果您具有脚本:start,则类似
"scripts": { "start": "ng serve" }
然后它将执行ng serve -- --port {dynamic_port}
。如果npm找不到您的启动脚本,则默认为node server.js
请参阅How does spa.UseAngularCliServer() middleware serve a webpage?