我正在尝试使用ng serve升级本地angular开发环境,一天前它完美地工作,但是现在每次运行ng serve或npm start时都会抛出错误:
发生了未处理的异常:项目不存在。
我已经尝试在我的另一个不同项目中运行ng serve,它可以工作。
不确定是什么导致了这个错误。
确保您的angular.json
中的项目名称与从package.json
脚本部分调用的名称相匹配。
这是我发现问题的方式。 我收到了以下错误:
An unhandled exception occurred: Project does not exist.
See "C:\Users\Adam\AppData\Local\Temp\ng-XcQsPs\angular-errors.log" for further details.
当我查看那个日志文件时,看到了这个:
[error] Error: Project does not exist.
at WorkspaceNodeModulesArchitectHost.findProjectTarget (C:\Users\Adam\source\repos\TechScore.Express\node_modules\@angular-devkit\architect\node\node-modules-architect-host.js:94:23)
at WorkspaceNodeModulesArchitectHost.getBuilderNameForTarget (C:\Users\Adam\source\repos\TechScore.Express\node_modules\@angular-devkit\architect\node\node-modules-architect-host.js:13:39)
at RunCommand.runSingleTarget (C:\Users\Adam\source\repos\TechScore.Express\node_modules\@angular\cli\models\architect-command.js:175:55)
at RunCommand.runArchitectTarget (C:\Users\Adam\source\repos\TechScore.Express\node_modules\@angular\cli\models\architect-command.js:218:35)
at RunCommand.run (C:\Users\Adam\source\repos\TechScore.Express\node_modules\@angular\cli\commands\run-impl.js:14:25)
at RunCommand.validateAndRun (C:\Users\Adam\source\repos\TechScore.Express\node_modules\@angular\cli\models\command.js:134:39)
at process._tickCallback (internal/process/next_tick.js:68:7)
at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
我打开了node-modules-architect-host.js:94:23
并看到如下内容:
const projectDefinition = this._workspace.projects.get(target.project);
if (!projectDefinition) {
throw new Error('Project does not exist.');
}
我不知道为什么他们会抛出这样的错误,而不告诉你哪个项目不存在。所以我将文件更改为如下:
throw new Error('Project does not exist. ' + target.project);
现在,当我构建时,我会得到这样一个错误:
An unhandled exception occurred: Project does not exist. client-app
最后我终于可以看到罪魁祸首是谁了!在全局中搜索"client-app",我发现它被从package.json
中使用,但我的项目在angular.json
中是"ClientApp"。将所有引用"ClientApp"的地方都改成"client-app",问题得以解决。
('项目不存在。' + target.project);
,这将节省很多时间。 - kakurala类似于adam0101提到的问题, 我通过更改项目名称解决了这个问题。实际上,package.json和angular.json的名称可以不同(至少对我来说是这样),但在angular.json中,命名是一致的。
与adam0101提到的问题类似,我通过更改项目名称解决了该问题。实际上,package.json和angular.json的名称可以不同(至少对我而言),但在angular.json中,命名是一致的。
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"e-admin": { ======NAME USED HERE=======
"root": "",
...
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "eAdmin:build" ===NAME USED HERE====
},
"configurations": {
"production": {
"browserTarget": "eAdmin:build:production" <===NAME USED HERE
}
}
},
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"e-admin": {
"root": "",
...
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "e-admin:build"
},
"configurations": {
"production": {
"browserTarget": "e-admin:build:production"
}
}
},
angular.json
中定义了一个命令,但是它甚至并不存在于 package.json
中,它仍然可以正常工作。 - Daniel Danieleckitestapp
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": { // here
"testapp": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
.....................
"defaultProject": "testapp",
请尝试
npm install
yarn install
请确保您的angular.json文件包含以下配置
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": { // here
"testapp": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
我在 angular.json 和 package.json 中匹配了数值,问题得到解决。
angular.json:
"projects": {
"step1": {
"projectType": "application",
...,
...,
package.json
{
"name": "step1",
...,
...,
我通过将tsconfig.json中的目标从es2015更改为es5来解决了这个问题。
在 angular.json 中,项目名称必须在每个需要使用的属性中保持一致。
同时,要注意大小写,甚至在路径中也要注意。在 angular.json 文件中,Windows 不会报错,但 Angular 会报错!
我复制了一个项目并更改了它的名称,结果出现了这个错误。通过在angular.json中将项目名称全部更改来解决该问题。
例如:
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "e2e/protractor.conf.js",
"devServerTarget": "YourNewProjectName:serve"
},
"configurations": {
"production": {
"devServerTarget": "YourNewProjectName:serve:production"
}
}
},
ng serve
命令? - Carsten