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 testng 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