Angular13升级到17后执行npm run start报错:无法确定命令的项目或目标
问题原因
你执行npm run start(对应ng serve)报错的核心原因是:你的Angular工作区里只有一个Library类型的项目,而ng serve是专门用来启动Angular应用(Application)的命令,库项目本身没有serve这个构建目标(查看你的angular.json里的architect节点,只有build、test、lint,没有serve),所以CLI无法找到对应的执行目标。
解决方案
分两种场景处理:
场景1:你原本需要运行一个Angular应用
如果你的项目原本是可运行的应用,升级后变成了库,说明升级过程中配置出现问题,或误操作把应用项目改成了库。可以通过以下步骤添加应用项目并关联你的库:
- 执行命令创建新的应用项目:
ng generate application test-app - 修改angular.json,将新应用设置为默认项目(添加
defaultProject字段):{ "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "defaultProject": "test-app", // 新增该行 "projects": { // 原有的test-angular库项目配置 "test-app": { // 自动生成的应用项目配置 } } } - 在新应用中引用你的库,之后执行
npm run start就能正常启动应用。
场景2:你确实只需要维护这个Angular库
如果你的目标是维护这个库,npm run start对你没有意义,因为库不需要启动服务。你可以:
- 用
npm run watch:lib命令监听库代码变化,自动重新构建; - 若需要测试库功能,可按场景1的方式创建测试应用,在应用中引入库进行调试。
另外,若不需要启动应用,可修改package.json里的start脚本,改成和库相关的命令,比如:
"scripts": { // ... "start": "npm run watch:lib", // ... }
内容的提问来源于stack exchange,提问作者Devang Patel
相关产品推荐
相关产品推荐

