【问题标题】:Angular2 cli generates 'Error: Trying to add a new entry to an already existing one'Angular2 cli 生成“错误:尝试将新条目添加到已经存在的条目”
【发布时间】:2016-04-06 23:18:57
【问题描述】:

我使用Angular2 Cli 作为我的 Angular 2 应用程序的运行时环境。它的架构、一流的开发工具和整体深思熟虑(因为没有更好的词)给我留下了深刻的印象。

但是,大约每五次保存(构建)我的服务器就会生成错误消息:

Error: Trying to add a new entry to an already existing one:

然后我必须终止该进程并重新启动它以解决问题。

这是全文:

file changed app/vtClass.ts
The Broccoli Plugin: [BroccoliTypeScriptCompiler] failed with:
Error: Trying to add a new entry to an already existing one: /home/vturner/vtstuff/angular/projects/ang2-cli2/tmp/broccoli_type_script_compiler-input_base_path-sdRX1KMo.tmp/0/src/app/ang2-cli2.spec.ts
    at BroccoliTypeScriptCompiler._addNewFileEntry (/home/vturner/vtstuff/angular/projects/ang2-cli2/node_modules/angular-cli/lib/broccoli/broccoli-typescript.js:212:13)
    at /home/vturner/vtstuff/angular/projects/ang2-cli2/node_modules/angular-cli/lib/broccoli/broccoli-typescript.js:159:38
    at Array.forEach (native)
    at BroccoliTypeScriptCompiler._doFullBuild (/home/vturner/vtstuff/angular/projects/ang2-cli2/node_modules/angular-cli/lib/broccoli/broccoli-typescript.js:159:16)
    at BroccoliTypeScriptCompiler._doIncrementalBuild (/home/vturner/vtstuff/angular/projects/ang2-cli2/node_modules/angular-cli/lib/broccoli/broccoli-typescript.js:116:12)
    at BroccoliTypeScriptCompiler.build (/home/vturner/vtstuff/angular/projects/ang2-cli2/node_modules/angular-cli/lib/broccoli/broccoli-typescript.js:45:12)
    at /home/vturner/vtstuff/angular/projects/ang2-cli2/node_modules/broccoli-caching-writer/index.js:152:21
    at lib$rsvp$$internal$$tryCatch (/home/vturner/vtstuff/angular/projects/ang2-cli2/node_modules/rsvp/dist/rsvp.js:1036:16)
    at lib$rsvp$$internal$$invokeCallback (/home/vturner/vtstuff/angular/projects/ang2-cli2/node_modules/rsvp/dist/rsvp.js:1048:17)
    at lib$rsvp$$internal$$publish (/home/vturner/vtstuff/angular/projects/ang2-cli2/node_modules/rsvp/dist/rsvp.js:1019:11)

The broccoli plugin was instantiated at: 
    at BroccoliTypeScriptCompiler.Plugin (/home/vturner/vtstuff/angular/projects/ang2-cli2/node_modules/broccoli-plugin/index.js:10:31)
    at BroccoliTypeScriptCompiler.CachingWriter [as constructor] (/home/vturner/vtstuff/angular/projects/ang2-cli2/node_modules/broccoli-caching-writer/index.js:21:10)
    at BroccoliTypeScriptCompiler (/home/vturner/vtstuff/angular/projects/ang2-cli2/node_modules/angular-cli/lib/broccoli/broccoli-typescript.js:25:35)
    at Angular2App.toTree (/home/vturner/vtstuff/angular/projects/ang2-cli2/node_modules/angular-cli/lib/broccoli/angular2-app.js:67:16)
    at module.exports (/home/vturner/vtstuff/angular/projects/ang2-cli2/angular-cli-build.js:11:14)
    at Class.module.exports.Task.extend.setupBroccoliBuilder (/home/vturner/vtstuff/angular/projects/ang2-cli2/node_modules/angular-cli/node_modules/angular-cli/lib/models/builder.js:55:19)
    at Class.module.exports.Task.extend.init (/home/vturner/vtstuff/angular/projects/ang2-cli2/node_modules/angular-cli/node_modules/angular-cli/lib/models/builder.js:89:10)
    at new Class (/home/vturner/vtstuff/angular/projects/ang2-cli2/node_modules/core-object/core-object.js:18:12)
    at Class.module.exports.Task.extend.run (/home/vturner/vtstuff/angular/projects/ang2-cli2/node_modules/angular-cli/node_modules/angular-cli/lib/tasks/serve.js:15:19)
    at /home/vturner/vtstuff/angular/projects/ang2-cli2/node_modules/angular-cli/node_modules/angular-cli/lib/commands/serve.js:70:22

我似乎只在出现编码错误时才遇到问题,但这并不是说编码错误与此消息之间存在 1-1 对应关系——我生成的大多数编码错误生成这条消息。

一旦我收到错误,服务器似乎会进入一个阻塞状态,无论我做什么,包括修复编码问题,都会让问题消失。只有在我循环服务器时它才会消失。
必须不断检查这种情况并循环服务器来解决这个问题,这变得非常乏味,这需要大约 6 秒。

我可以发布我的代码,但我没有看到代码与收到此消息之间的任何押韵或原因,所以我认为这不会有帮助,即我认为这是一个环境问题而不是编码问题。我已尝试删除错误消息中列出的 tmp 目录,但没有成功。

我这样启动我的服务器:

vturner@vturner-virtual-machine ~/vtstuff/angular/projects/ang2-cli2 $ 
sudo ng serve 
Could not start watchman; falling back to NodeWatcher for file system events.
Visit http://www.ember-cli.com/user-guide/#watchman for more info.
Livereload server on http://localhost:49152
Serving on http://localhost:4200/

Build successful - 8049ms.

Slowest Trees                                 | Total               
----------------------------------------------+---------------------
BroccoliTypeScriptCompiler                    | 7643ms              

Slowest Trees (cumulative)                    | Total (avg)         
----------------------------------------------+---------------------
BroccoliTypeScriptCompiler (1)                | 7643ms              

file changed app/vtClass.ts

Build successful - 1072ms.

注意:我一直以 sudo 运行服务器,因为我要么遇到权限问题,要么在某处读到它以 sudo 运行得更快(最后一个可能只在 Windows 上是真的),但我不认为以 sudo 运行与我的问题有关。

这是我的 package.json:

{
  "name": "ang2-cli2",
  "version": "0.0.0",
  "license": "MIT",
  "angular-cli": {},
  "scripts": {
    "start": "ng server",
    "postinstall": "typings install --ambient",
    "lint": "tslint src/**/*.ts",
    "format": "clang-format -i -style=file --glob=src/**/*.ts",
    "pree2e": "webdriver-manager update",
    "e2e": "protractor"
  },
  "private": true,
  "dependencies": {
    "angular2": "2.0.0-beta.11",
    "es6-shim": "^0.35.0",
    "reflect-metadata": "0.1.2",
    "rxjs": "5.0.0-beta.2",
    "systemjs": "0.19.20",
    "three": "^0.75.0",
    "zone.js": "^0.6.4"
  },
  "devDependencies": {
    "angular-cli": "0.0.*",
    "angular-cli-github-pages": "^0.2.0",
    "clang-format": "^1.0.35",
    "codelyzer": "0.0.12",
    "ember-cli-inject-live-reload": "^1.4.0",
    "jasmine-core": "^2.3.4",
    "jasmine-spec-reporter": "^2.4.0",
    "karma": "^0.13.15",
    "karma-chrome-launcher": "^0.2.1",
    "karma-jasmine": "^0.3.6",
    "protractor": "^3.0.0",
    "ts-node": "^0.5.5",
    "tslint": "^3.6.0",
    "typescript": "^1.8.7",
    "typings": "^0.6.6"
  }
}

谁能告诉我我做错了什么,或者我可以做些什么来防止这种情况发生?

非常感谢。

【问题讨论】:

  • 我注释掉了 node_modules/angular-cli/lib/broccoli/broccili-typescript.js 中的错误行:_addNewFileEntry(entry) { const p = path.join(this.inputPaths[0], entry.relativePath); if (this._fileRegistry[p]) { //vt add console.log("vt.broccoli-typescript.js: intercepting dupicate entry error"); //vt end //vtthrow new Error('Trying to add a new entry to an already existing one: ' + p); } 但现在我得到了Error: EEXIST: file already exists 我认为这可能是一个库问题。见github.com/ember-cli/ember-cli/issues/3413
  • 我在使用 Angular 2 CLI 时遇到了完全相同的问题。每次都必须杀死并重新启动服务器非常乏味。您是否将此作为问题提交到 CLI 的 Github 上?
  • 我在 angular-cli repo 上找到了类似的 open issue。我添加了“我也是”评论以及我的详细信息。开票的人指出,这种情况只有在您修复以前标记的错误时才会发生。我能够验证这为我生成条件的机制。
  • 我在ticket 中发布了一个解决方法(小的源代码更改)。只是临时修复,直到开发人员能够提出实际修复。

标签: angularjs angular broccolijs angular-cli


【解决方案1】:

如果您是 windows 用户,请在管理模式下运行您的终端。我遇到了同样的问题,它对我有用:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多