Angular 中的项目定义是什么?

Kai*_*tze 5 travis-ci 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.
Run Code Online (Sandbox Code Playgroud)

错误消息非常令人困惑。我用谷歌搜索了“ 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
Run Code Online (Sandbox Code Playgroud)

Travis-CI 的原始日志可以在这里找到。


更新1

我刚刚在我的 PC 上安装了最新的 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)
Run Code Online (Sandbox Code Playgroud)

并用它生成一个新项目testprj

当我ng test在目录中执行时My Projects/testprj/,一切正常。Karma v3.0.0服务器启动,Chrome浏览器上线。

然而,当我ng test在目录中执行时My Projects/ng-dementor/,Angular CLI 只给出“测试命令需要在 Angular 项目中运行,但找不到项目定义” 。


更新2

我根据Angular 更新指南更新了我的 Angular CLI 。现在我的开发环境是:

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
Run Code Online (Sandbox Code Playgroud)

dan*_*y74 3

这个答案涵盖了 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"
}
Run Code Online (Sandbox Code Playgroud)

要测试该项目,您可以运行:

ng test
Run Code Online (Sandbox Code Playgroud)

或者

ng test MYPROJECT
Run Code Online (Sandbox Code Playgroud)

如果你运行这个:

ng test --help
Run Code Online (Sandbox Code Playgroud)

它将提供一些有关如何针对特定版本的 Angular 使用该命令的反馈。

另请参阅此处,但这是 Angular 6 特有的。

另请参阅Angular Cli 错误:serve 命令需要在 Angular 项目中运行,但找不到项目定义

另外,您在 travis 上的全局安装与本地计算机上的安装相同吗?

如果您需要全局安装一些软件包,请将其添加到您的.travis.yml文件中:

before_install:
- npm install -g your-package-name
Run Code Online (Sandbox Code Playgroud)