Angular 中的项目定义是什么?
What is a project definition in Angular?
当我在 Travis-CI 上测试我的 Angular 项目时,出现了两个异常:
$ ng test
The test command requires to be run in an Angular project, but a project definition could not be found.
The command "ng test" exited with 1.
$ ng e2e
The e2e command requires to be run in an Angular project, but a project definition could not be found.
The command "ng e2e" exited with 1.
错误消息非常混乱。
我用谷歌搜索了“Angular 项目定义”,
但没有找到相关内容。
我查看了 Angular CLI wiki,
但没有关于 ng test
和 ng e2e
的有用信息,
更不用说“项目定义”的定义了。
我的Github项目:
https://github.com/donizyo/ng-dementor
我的开发环境:
$ ng version
Angular CLI: 7.0.3
Node: 11.1.0
OS: linux x64
Angular: 5.2.11
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
Package Version
------------------------------------------------------
@angular-devkit/architect 0.10.3
@angular-devkit/core 7.0.3
@angular-devkit/schematics 7.0.3
@angular/cli 7.0.3
@schematics/angular 7.0.3
@schematics/update 0.10.3
rxjs 5.5.12
typescript 2.5.3
可以找到 Travis-CI 的原始日志 here。
更新 1
我刚刚在我的电脑上安装了最新的 Angular CLI (v7.0.4),
$ ng version
Angular CLI: 7.0.4
Node: 8.9.3
OS: win32 ia32
Angular: <error>
... animations, cli, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
Package Version
------------------------------------------------------
@angular-devkit/architect 0.10.4 (cli-only)
@angular-devkit/core 7.0.4 (cli-only)
@angular-devkit/schematics 7.0.4 (cli-only)
@schematics/angular 7.0.4 (cli-only)
@schematics/update 0.10.4 (cli-only)
rxjs 6.3.3 (cli-only)
typescript 3.1.3 (cli-only)
并用它生成了一个新项目testprj
。
当我在目录 My Projects/testprj/
中执行 ng test
时,
一切顺利。
Karma v3.0.0 服务器已启动,Chrome 浏览器已启动。
但是当我在目录 My Projects/ng-dementor/
中执行 ng test
时,
Angular CLI 除了“测试命令需要在 Angular 项目中 运行,但找不到项目定义。 “
更新 2
我更新了 Angular CLI
根据 Angular Update Guide。
现在我的开发环境是:
Angular CLI: 7.0.4
Node: 8.9.3
OS: win32 ia32
Angular: 5.2.11
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.10.4
@angular-devkit/build-angular 0.10.4
@angular-devkit/build-optimizer 0.10.4
@angular-devkit/build-webpack 0.10.4
@angular-devkit/core 7.0.4
@angular-devkit/schematics 7.0.4
@angular/cli 7.0.4
@ngtools/webpack 7.0.4
@schematics/angular 7.0.4
@schematics/update 0.10.4
rxjs 5.5.12
typescript 2.5.3
webpack 4.19.1
此答案涵盖 Angular 6,但看起来您使用的是较旧的 Angular 版本,因此这可能无法正常工作。您可以升级到 6,详情如下:
https://blog.angular.io/version-6-of-angular-now-available-cc56b0efa7a4
所以无论如何在 Angular 6 中你会在 angular.json
中找到这些条目:
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"MYPROJECT": {
// more stuff
}
},
// more stuff
"defaultProject": "MYPROJECT"
}
要测试此项目,您可以 运行:
ng test
或
ng test MYPROJECT
如果你运行这个:
ng test --help
它将提供一些关于如何使用您的特定版本的命令的反馈 Angular。
另见 here 但这是 Angular 6 特定的。
另见
此外,您在 travis 上的全局安装与在本地计算机上的安装相同吗?
如果您需要全局安装一些软件包,请将其添加到您的 .travis.yml
文件中:
before_install:
- npm install -g your-package-name
当我在 Travis-CI 上测试我的 Angular 项目时,出现了两个异常:
$ ng test
The test command requires to be run in an Angular project, but a project definition could not be found.
The command "ng test" exited with 1.
$ ng e2e
The e2e command requires to be run in an Angular project, but a project definition could not be found.
The command "ng e2e" exited with 1.
错误消息非常混乱。 我用谷歌搜索了“Angular 项目定义”, 但没有找到相关内容。
我查看了 Angular CLI wiki,
但没有关于 ng test
和 ng e2e
的有用信息,
更不用说“项目定义”的定义了。
我的Github项目:
https://github.com/donizyo/ng-dementor
我的开发环境:
$ ng version
Angular CLI: 7.0.3
Node: 11.1.0
OS: linux x64
Angular: 5.2.11
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
Package Version
------------------------------------------------------
@angular-devkit/architect 0.10.3
@angular-devkit/core 7.0.3
@angular-devkit/schematics 7.0.3
@angular/cli 7.0.3
@schematics/angular 7.0.3
@schematics/update 0.10.3
rxjs 5.5.12
typescript 2.5.3
可以找到 Travis-CI 的原始日志 here。
更新 1
我刚刚在我的电脑上安装了最新的 Angular CLI (v7.0.4),
$ ng version
Angular CLI: 7.0.4
Node: 8.9.3
OS: win32 ia32
Angular: <error>
... animations, cli, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
Package Version
------------------------------------------------------
@angular-devkit/architect 0.10.4 (cli-only)
@angular-devkit/core 7.0.4 (cli-only)
@angular-devkit/schematics 7.0.4 (cli-only)
@schematics/angular 7.0.4 (cli-only)
@schematics/update 0.10.4 (cli-only)
rxjs 6.3.3 (cli-only)
typescript 3.1.3 (cli-only)
并用它生成了一个新项目testprj
。
当我在目录 My Projects/testprj/
中执行 ng test
时,
一切顺利。
Karma v3.0.0 服务器已启动,Chrome 浏览器已启动。
但是当我在目录 My Projects/ng-dementor/
中执行 ng test
时,
Angular CLI 除了“测试命令需要在 Angular 项目中 运行,但找不到项目定义。 “
更新 2
我更新了 Angular CLI 根据 Angular Update Guide。 现在我的开发环境是:
Angular CLI: 7.0.4
Node: 8.9.3
OS: win32 ia32
Angular: 5.2.11
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.10.4
@angular-devkit/build-angular 0.10.4
@angular-devkit/build-optimizer 0.10.4
@angular-devkit/build-webpack 0.10.4
@angular-devkit/core 7.0.4
@angular-devkit/schematics 7.0.4
@angular/cli 7.0.4
@ngtools/webpack 7.0.4
@schematics/angular 7.0.4
@schematics/update 0.10.4
rxjs 5.5.12
typescript 2.5.3
webpack 4.19.1
此答案涵盖 Angular 6,但看起来您使用的是较旧的 Angular 版本,因此这可能无法正常工作。您可以升级到 6,详情如下:
https://blog.angular.io/version-6-of-angular-now-available-cc56b0efa7a4
所以无论如何在 Angular 6 中你会在 angular.json
中找到这些条目:
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"MYPROJECT": {
// more stuff
}
},
// more stuff
"defaultProject": "MYPROJECT"
}
要测试此项目,您可以 运行:
ng test
或
ng test MYPROJECT
如果你运行这个:
ng test --help
它将提供一些关于如何使用您的特定版本的命令的反馈 Angular。
另见 here 但这是 Angular 6 特定的。
另见
此外,您在 travis 上的全局安装与在本地计算机上的安装相同吗?
如果您需要全局安装一些软件包,请将其添加到您的 .travis.yml
文件中:
before_install:
- npm install -g your-package-name