升级到.Net 3.0后出现错误“ npm ERR!缺少脚本:启动”

时间:2019-12-15 08:46:13

标签: node.js angular asp.net-core npm

在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.Task 1 task) at System.Threading.Tasks.ContinuationResultTaskFromResultTask 1.get_Result()位于   Microsoft.AspNetCore.SpaServices.Extensions.Util.TaskTimeoutExtensions.WithTimeout [T](Task 1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task 1 baseUriTask,CancellationToken   applicationStoppingToken,布尔Prox​​y404s)位于   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!缺少脚本:开始

1 个答案:

答案 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?