【问题标题】:Bower installs same package different in file structureBower 安装文件结构不同的相同包
【发布时间】: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


【解决方案1】:

我们遇到了同样的问题,它与 bower 在 nfs 存储上使用的 tmp 目录有关。验证您的 tmp 目录(由 .bowerrc 中的“tmp”或 env var TMP_DIR 指定)不在 nfs 挂载存储上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多