【发布时间】:2023-03-25 18:02:02
【问题描述】:
我们有一个 TeamCity 构建服务器,在三个不同的构建用户上运行,配置相同。我们已经使用 yeoman 建立了一个 angular/grunt 项目
更新 6
添加了凉亭问题 https://github.com/bower/bower/issues/1709
为什么 bower 有时会安装 angular-animate 和结构:
bower_components/angular-animate/bower-angular-animate-1.3.13/angular-animate.js
有时它会将 bower-angular-animate-1.3.13 的内容放在根目录中,因此结构如下所示:
bower_components/angular-animate/angular-animate.js
当然,第一个使我们的测试失败..
有人知道吗?获得额外目录的总是相同的包。在本地它总是有效的。
更新:
似乎当我们运行 bower 时,它在包 bower.json 中找不到主 js 文件,看起来这可能是问题所在。但我不知道如何解决它。
更新 2:
看起来 bower 在 bower.json 中找不到主键,例如:
[09:27:40]bower angular-animate#1.3.13 invalid-meta angular-animate is missing "main" entry in bower.json
[09:27:40]bower angular-animate#1.3.13 invalid-meta angular-animate is missing "ignore" entry in bower.json
那么,什么会导致在查找主目录时出现差异?
更新 3:
如果我理解正确,则 .bower.json 文件是由 bower 在下载并解压缩存档后创建的。现在我注意到 .bower.json 文件中存在差异。在生成的 .bower.json 文件中,缺少 main 和 ignore。并且存档的提取方式也与上面提到的不同。
这个包失败:
[pejn@bx0023 1.3.13]$ more .bower.json
{
"name": "angular-animate",
"homepage": "https://github.com/angular/bower-angular-animate",
"version": "1.3.13",
"_release": "1.3.13",
"_resolution": {
"type": "version",
"tag": "v1.3.13",
"commit": "f18cb98590471ad9c1e5ae0e57178e9ecb8d384c"
},
"_source": "https://github.com/angular/bower-angular-animate.git",
"_target": "1.3.13"
}
这行得通:
[pejn@bx0023 1.3.13]$ more .bower.json
{
"name": "angular-animate",
"version": "1.3.13",
"main": "./angular-animate.js",
"ignore": [],
"dependencies": {
"angular": "1.3.13"
},
"homepage": "https://github.com/angular/bower-angular-animate",
"_release": "1.3.13",
"_resolution": {
"type": "version",
"tag": "v1.3.13",
"commit": "f18cb98590471ad9c1e5ae0e57178e9ecb8d384c"
},
"_source": "https://github.com/angular/bower-angular-animate.git",
"_target": "1.3.13"
}
更新 4:
添加我的 bower.json
{
"name": "App",
"version": "0.0.1",
"dependencies": {
"angular": "1.3.13",
"json3": "3.3.0",
"es5-shim": "4.0.0",
"bootstrap": "3.2.0",
"angular-animate": "1.3.13",
"angular-cookies": "1.3.13",
"angular-resource": "1.3.13",
"angular-route": "1.3.13",
"angular-sanitize": "1.3.13",
"angular-touch": "1.3.13",
"angular-cache": "3.2.5",
"modernizr": "2.8.3",
"jquery": "2.1.3",
"jquery-ui": "1.11.3",
"angular-bootstrap": "0.12.0",
"angular-local-storage": "0.1.5",
"highstock-release": "2.0.4",
"moment": "2.9.0",
"moment-timezone": "0.3.0",
"angular-ui-sortable": "0.13.3",
"angular-ui-utils": "bower-unique"
},
"devDependencies": {
"angular-mocks": "1.3.13",
"angular-scenario": "1.3.13"
},
"appPath": "app",
"resolutions": {
"angular": "1.3.13"
}
}
更新 5
我在 buildserver 上运行了 bower 测试,我可以看到它看起来像我有代理/权限问题。看起来我们得到了一个 403。我在下面包含了 boer 测试的部分输出:
[18:27:57] [0m 1) UrlResolver .hasNew should resolve to false if cache headers haven't changed:
[18:27:57] [0m [31m Uncaught Error: expected true to equal false [0m [90m
...
[18:27:57] [0m 2) UrlResolver .hasNew should resolve to true if server responds with 304 (ETag mechanism):
[18:27:57] [0m [31m Uncaught Error: expected true to equal false [0m [90m
...
[18:27:57] [0m 3) UrlResolver .hasNew should work with redirects:
[18:27:57] [0m [31m Uncaught Error: expected true to equal false [0m [90m
...
[18:27:57] [0m 4) UrlResolver .resolve should download file, renaming it to index:
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
...
[18:27:57] [0m 5) UrlResolver .resolve should extract if source is an archive:
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
...
[18:27:57] [0m 6) UrlResolver .resolve should extract if source is an archive (case insensitive):
[18:27:57]
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
...
[18:27:57] [0m 7) UrlResolver .resolve should copy extracted folder contents if archive contains only a folder inside:
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
...
[18:27:57] [0m 8) UrlResolver .resolve should extract if source is an archive and rename to index if it's only one file inside:
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
[18:27:57] at createError (/mnt/ext4/builduser7/build-agent-work-dir/1f8c068934a7bbe0/node_modules/bower/lib/util/createError.js:4:15)
[18:27:57] at Request.<anonymous> (/mnt/ext4/builduser7/build-agent-work-dir/1f8c068934a7bbe0/node_modules/bower/lib/util/download.js:45:40)
[18:27:57] at Request.emit (events.js:117:20)
[18:27:57] [33mWarning: Task "simplemocha:full" failed. Use --force to continue. [39m
[18:27:57] at Request.onResponse (/mnt/ext4/builduser7/build-agent-work-dir/1f8c068934a7bbe0/node_modules/bower/node_modules/request/request.js:1085:10)
...
[18:27:57] [0m 9) UrlResolver .resolve should extract if source is an archive and not rename to index if inside it's just a just bower.json/component.json file in it:
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
....
[18:27:57] [0m 10) UrlResolver .resolve should rename single file from a single folder to index when source is an archive:
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
....
[18:27:57] [0m 11) UrlResolver .resolve should extract if response content-type is an archive:
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
....
[18:27:57] [0m 12) UrlResolver .resolve should extract if response content-disposition filename is an archive:
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
...
[18:27:57] [0m 13) UrlResolver .resolve should save the release if there's a E-Tag:
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
...
[18:27:57] [0m 14) UrlResolver .resolve should allow for query strings in URL:
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
...
[18:27:57] [0m 15) UrlResolver .resolve should save cache headers:
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
....
[18:27:57] [0m 16) UrlResolver .resolve should work with redirects:
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
....
[18:27:57] [0m 17) UrlResolver .resolve content-disposition validation should work with and without quotes:
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
...
[18:27:57] [0m 18) UrlResolver .resolve content-disposition validation should not work with partial quotes:
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
...
[18:27:57] [0m 19) UrlResolver .resolve content-disposition validation should not work if the filename contain chars other than alphanumerical, dashes, spaces and dots:
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
...
[18:27:57] [0m 20) UrlResolver .resolve content-disposition validation should trim leading and trailing spaces:
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
...
[18:27:57] [0m 21) UrlResolver .resolve content-disposition validation should not work if the filename ends with a dot:
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
...
[18:27:57] [0m 22) UrlResolver .resolve content-disposition validation should be case insensitive:
[18:27:57] [0m [31m Uncaught Error: Status code of 403 [0m [90m
...
[18:27:57] [0m 23) GitResolver ._cleanup should remove the .git folder from the temp dir:
[18:27:57] [0m [31m Uncaught Error: ENOENT, lstat '/mnt/ext4/builduser7/build-agent-work-dir/1f8c068934a7bbe0/node_modules/bower/.git' [0m [90m
...
[18:27:57] [0m 24) GitFsResolver .resolve should checkout correctly if resolution is a branch:
[18:27:57] [0m [31m Uncaught Error: Tag/branch some-branch does not exist [0m [90m
...
[18:27:57] [0m 25) GitFsResolver .resolve should leave the original repository untouched:
[18:27:57] [0m [31m Uncaught Error: Tag/branch some-branch does not exist [0m [90m
...
[18:27:57] [0m 26) GitFsResolver .resolve should copy source folder permissions:
[18:27:57] [0m [31m Uncaught Error: Tag/branch some-branch does not exist [0m [90m
...
[18:27:57] [0m 27) GitFsResolver #refs should resolve to the references of the local repository:
[18:27:57]
[18:27:57] [31mUncaught Error: expected [ '0a7daf646d4fd743b6ef701d63bdbe20eee422de refs/tags/0.0.1',
...
[18:27:57] [0m 28) GitFsResolver #refs should cache the results:
[18:27:57]
[18:27:57] [31mUncaught Error: expected [ '0a7daf646d4fd743b6ef701d63bdbe20eee422de refs/tags/0.0.1',
...
[18:27:57] [0m 29) GitRemoteResolver .resolve should checkout correctly if resolution is a branch:
[18:27:57] [0m [31m Uncaught Error: Tag/branch some-branch does not exist [0m [90m
....
[18:27:57] [0m 30) GitRemoteResolver #refs should resolve to the references of the remote repository:
[18:27:57]
[18:27:57] [31mUncaught Error: expected [ '0a7daf646d4fd743b6ef701d63bdbe20eee422de refs/tags/0.0.1',
...
[18:27:57] [0m 31) GitRemoteResolver #refs should cache the results:
[18:27:57]
[18:27:57] [31mUncaught Error: expected [ '0a7daf646d4fd743b6ef701d63bdbe20eee422de refs/tags/0.0.1',
...
[18:27:57] [0m 32) GitHub .constructor should ensure .git in the source:
[18:27:57] [0m [31m Error: expected 'https://github.com/twitter/bower.git' to equal 'git://github.com/twitter/bower.git' [0m [90m
...
[18:27:57] [0m 33) resolverFactory should recognize git remote endpoints correctly:
[18:27:57] [0m [31m Uncaught Error: expected 'https://github.com/bower/bower.git' to equal 'git://github.com/bower/bower.git' [0m [90m
...
[18:27:57] [0m 34) resolverFactory should recognize GitHub endpoints correctly:
[18:27:57] [0m [31m Uncaught Error: expected 'https://github.com/user/project.git' to equal 'git://github.com/user/project.git' [0m [90m
...
[18:27:57] [0m 35) resolverFactory should recognize registry endpoints correctly:
[18:27:57] [0m [31m Uncaught Error: expected 'https://github.com/IndigoUnited/dejavu.git' to equal 'git://github.com/IndigoUnited/dejavu.git' [0m [90m
...
[18:27:57] [0m 36) resolverFactory should use the configured shorthand resolver:
[18:27:57] [0m [31m Uncaught Error: expected 'https://github.com/bower/bower.git' to equal 'git://github.com/bower/bower.git' [0m [90m
【问题讨论】:
-
你能分享你的
bower.json吗? -
我们已经通过签入所有凉亭组件暂时解决了这个问题,虽然没有我想的那么好,但只是为了让它能够构建,它现在可以工作了。
标签: javascript gruntjs npm bower yeoman-generator-angular