node.js - 为什么 Travis CI 无法在 npm 安装期间创建目录?

标签 node.js npm travis-ci

我最近的提交以某种方式导致 Travis CI 在尝试运行 npm install 时停止工作。我唯一的改变是更正了调用 Javascript 文件的拼写错误(从 fooBar/foo-bar.jsfoo-bar/foo-bar.js ),所以我不确定提交本身是否是原因。我从 Travis CI 收到的错误如下:

bower                                               EACCES EACCES, mkdir '/public'

Stack trace:
Error: EACCES, mkdir '/public'
    at Error (native)

Console trace:
Error
    at StandardRenderer.error (/home/travis/build/myWorkplace/mySite/node_modules/bower/lib/renderers/StandardRenderer.js:83:37)
    at Logger.<anonymous> (/home/travis/build/myWorkplace/mySite/node_modules/bower/lib/bin/bower.js:110:26)
    at Logger.emit (events.js:107:17)
    at Logger.emit (/home/travis/build/myWorkplace/mySite/node_modules/bower/lib/node_modules/bower-logger/lib/Logger.js:29:39)
    at /home/travis/build/myWorkplace/mySite/node_modules/bower/lib/commands/index.js:48:20
    at _rejected (/home/travis/build/myWorkplace/mySite/node_modules/bower/lib/node_modules/q/q.js:844:24)
    at /home/travis/build/myWorkplace/mySite/node_modules/bower/lib/node_modules/q/q.js:870:30
    at Promise.when (/home/travis/build/myWorkplace/mySite/node_modules/bower/lib/node_modules/q/q.js:1122:31)
    at Promise.promise.promiseDispatch (/home/travis/build/myWorkplace/mySite/node_modules/bower/lib/node_modules/q/q.js:788:41)
    at /home/travis/build/myWorkplace/mySite/node_modules/bower/lib/node_modules/q/q.js:604:44
System info:
Bower version: 1.7.7
Node version: 0.12.2
OS: Linux 3.13.0-40-generic x64

不幸的是,Travis CI 是由承包商为我们设置的,因此我不知道要提供哪些更多信息,但如果还有什么其他信息有帮助,我会很乐意找到。

编辑:
查看成功运行的日志,它看起来像 mkdir该行是此版本的新内容...

编辑2: 这是我的.travis.ymlbower.json :

.travis.yml

language: node_js
node_js:
- 0.12.2
services:
- mongodb
before_install: npm install -g grunt-cli
install: npm install
before_script: grunt && grunt --target=admin
env:
  global:
  - NODE_ENV: test
  - PORT: 5000
  - SSL: "off"
  - TOKEN_SECRET: [xxx]
  - MONGO_URI: mongodb://localhost:27017/myWorkplace-test
  - BUCKET: myWorkplacebucket
  - AWS_REGION: us-west-2
  - CDN: https://[xxx].cloudfront.net
  - POSTMARK_API_KEY: POSTMARK_API_TEST
  - MAIL_FROM_NAME: myWorkplace
  - MAIL_FROM_EMAIL: user@myWorkplace.com
  - AIRBRAKE: [xxx]
  - secure: [xxx]
  - secure: [xxx]
deploy:
  - provider: s3
    access_key_id: [xxx]
    secret_access_key:
      secure: [xxx]
    bucket: "myWorkplace-builds"
    skip_cleanup: true
    region: us-west-2
    local_dir: dist
    on:
      branch: master
  - provider: s3
    access_key_id: [xxx]
    secret_access_key:
      secure: [xxx]
    bucket: "myWorkplace-builds-dev"
    skip_cleanup: true
    region: us-west-2
    local_dir: dist
    on:
      branch: dev
  - provider: codedeploy
    access_key_id: [xxx]
    secret_access_key:
      secure: [xxx]
    revision_type: github
    region: us-west-2
    application: mySite
    deployment_group: devs
    on:
      branch: dev
  - provider: codedeploy
    access_key_id: [xxx]
    secret_access_key:
      secure: [xxx]
    revision_type: github
    region: us-west-2
    application: mySite
    deployment_group: production
    on:
      branch: master
notifications:
  slack: myWorkplace:[xxx]

bower.json

{
  "name": "myWorkplace",
  "version": "0.0.1",
  "authors": [
    "Foo User <user@myWorkplace.com>"
  ],
  "license": "MIT",
  "private": true,
  "ignore": [
    "**/.*",
    "node_modules",
    "bower_components",
    "test",
    "tests"
  ],
  "dependencies": {
    "angular": "1.3.11",
    "jquery": "2.1.2",
    "angular-route": "1.3.11",
    "angular-resource": "1.3.11",
    "angular-animate": "1.3.11",
    "angular-mocks": "1.3.11",
    "less": "2.5.1",
    "bootstrap": "3.3.2",
    "angular-bootstrap": "0.12.1",
    "moment": "2.8.3",
    "html5-boilerplate": "4.3.0",
    "lodash": "3.1.0",
    "angular-bootstrap-show-errors": "2.0.0",
    "autofill-event": "1.0.0",
    "angular-ui-router": "0.2.11",
    "ngInfiniteScroll": "1.0.0",
    "angular-file-upload": "1.1.5",
    "d3": "3.3.10",
    "iso-currency": "~0.2.1",
    "angular-moment": "0.8.2",
    "angular-filter": "0.5.1",
    "angular-busy": "~4.1.2",
    "angular-csv-import": "0.0.14",
    "angulartics": "0.17.2",
    "angular-toggle-switch": "1.0.0",
    "ng-idle": "1.0.0",
    "iso-4217-currency-codes-angular": "~1.0.1"
  },
  "resolutions": {
    "angular": "1.3.11",
    "d3": "3.5.5"
  }
}

EDIT3:我重新运行了之前成功的 Travis 构建,但由于相同的错误而失败。这让我认为对模块的某种更新使其不再工作。但我不确定。值得注意的是,也许有一些行写着 graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.但我不知道如何更新它,因为 graceful-fs不在 package.json 中被提交到存储库...

最佳答案

事实证明,问题的根本原因是软件包已更新且不再在我的环境中工作。我通过将 package.json 中的所有版本锁定为我之前知道的版本来修复此问题。

关于node.js - 为什么 Travis CI 无法在 npm 安装期间创建目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35165556/

相关文章:

node.js - 我无法在 ubuntu 20.04 中安装 Nestjs

javascript - 在没有 Node/npm 的情况下构建 SPA 前端

django - 工作服 : Error- No source for in my application using Docker container

node.js - npm install 添加本地项目依赖

javascript - 如何使用 winston logger 记录 Node 错误?

node.js - NodeJS 加载网站并在渲染之前从页面中删除元素

javascript - 获取具有多个子对象的 JavaScript 对象的特定值

node.js - 使用 Artifactory npm 支持

node.js - 如何在 travis YML 文件上设置 kubernetes

node.js - 将 typedoc 部署到 gh-pages