【问题标题】:npm ERR! Cannot read property 'pause' of undefined --Bluemixnpm 错误!无法读取未定义的属性“暂停”--Bluemix
【发布时间】:2017-09-09 17:30:36
【问题描述】:

我正在尝试将 Sails.js 应用程序部署到 Bluemix,并且在 Bluemix 上工具链的部署阶段(调用 CF PUSH 命令时)我们收到以下错误:

npm 错误!无法读取未定义的属性“暂停”

我知道跟踪到 npm-error.log 文件,但是,由于应用程序处于“关闭”状态,我们无法通过 ssh 进入查看文件中的内容,因此我无法访问它在一次糟糕的部署之后。

8 天前,使用 Cf push {app name}} 以及通过 Bluemix 中的简单构建和部署工具链成功部署了相同的代码。

在构建阶段我可以运行 Npm install 和 npm update 就好了。但是,无论如何,它似乎在部署阶段再次执行此操作并且失败了。以下是有关此失败的一些详细信息

NODE_ENV=production
   NPM_CONFIG_LOGLEVEL=error
   NPM_CONFIG_PRODUCTION=true
   Visit http://docs.cloudfoundry.org/buildpacks/node/index.html#vendoring
   NODE_HOME=/tmp/app/.cloudfoundry/0/node
   NODE_MODULES_CACHE=true
   NODE_VERBOSE=false
Restoring cache
       Loading 3 from cacheDirectories (default):
       - .npm
       - .cache/yarn (not cached - skipping)
       - bower_components (not cached - skipping)
       Installing node modules (package.json) Building dependencies
 sails@0.12.13 preinstall /tmp/app/node_modules/sails
 node ./lib/preinstall_npmcheck.js
Sails.js Installation: Checking npm-version successful
npm ERR! Cannot read property 'pause' of undefined
npm ERR!     /tmp/app/.npm/_logs/2017-09-09T17_02_48_660Z-debug.log
       **ERROR** Unable to build dependencies: exit status 1
Failed to compile droplet
Exit status 223
Staging failed: Exited with status 223
Destroying container
npm ERR! A complete log of this run can be found in:
Successfully destroyed container

Package.json 文件

{
  "name": "myApp",
  "private": true,
  "version": "0.0.1",
  "description": "Stuff my app does",
  "keywords": [
    "Cool Apps"
  ],
  "dependencies": {
    "bcryptjs": "^2.4.3",
    "cacheman": "^2.2.1",
    "ejs": "2.3.4",
    "elasticsearch": "^13.0.0-rc2",
    "find-remove": "^1.0.1",
    "fs": "0.0.1-security",
    "grunt": "1.0.1",
    "grunt-contrib-clean": "1.0.0",
    "grunt-contrib-coffee": "1.0.0",
    "grunt-contrib-concat": "1.0.1",
    "grunt-contrib-copy": "1.0.0",
    "grunt-contrib-cssmin": "1.0.1",
    "grunt-contrib-jst": "1.0.0",
    "grunt-contrib-less": "1.3.0",
    "grunt-contrib-uglify": "1.0.1",
    "grunt-contrib-watch": "1.0.0",
    "grunt-sails-linker": "~0.10.1",
    "grunt-sync": "0.5.2",
    "include-all": "^1.0.0",
    "jsonwebtoken": "^7.3.0",
    "moment": "^2.18.1",
    "moment-timezone": "^0.5.13",
    "passport": "^0.2.x",
    "passport-http-bearer": "^1.0.1",
    "passport-idaas-openidconnect": "^1.1.0",
    "passport-local": "^1.0.0",
    "rc": "1.0.1",
    "request": "^2.81.0",
    "request-promise": "^4.2.0",
    "sails": "~0.12.13",
    "sails-disk": "~0.10.9",
    "sails-mongo": "^0.12.2",
    "stream": "0.0.2",
    "uuid-1345": "^0.99.6",
    "validator": "^7.0.0",
    "natural-sort": "^1.0.0"
  },
  "scripts": {
    "start": "node app.js"
  },
  "engines": {
    "node": "^8.0.x",
    "npm": "^5.0.x"
  },
  "main": "app.js",
  "author": "Scott N",
  "license": ""
}

到目前为止我已经尝试过的事情。 -更改节点版本 -更改了 npm 版本 -更改依赖项版本以包含 ^ 前缀 - 移除 package.json 文件中除 Sails 以外的所有依赖项

所以 Sails.js 和 Nodebuildpack/Bluemix 不能很好地相互配合。

任何帮助将不胜感激。 谢谢

【问题讨论】:

    标签: node.js deployment sails.js ibm-cloud


    【解决方案1】:

    这也发生在我身上。我必须回滚 npm: 5.3.0 的上一个版本,它现在可以工作了。 (顺便说一句:macOS)

    只有当我像这样更新我的 npm 版本时才会发生错误:

      Update available 5.3.0 → 5.4.1    
       Run npm i -g npm to update      
    

    【讨论】:

    • 它实际上在我的 Mac 上运行良好。即使我循环浏览了所有旧的 NPM 版本,并且 node 版本运行良好。问题是当它在 Bluemix 上运行时会出现这样的错误。我会试一试,看看会发生什么。
    • 我在部署和构建阶段尝试过,但没有成功。我最终做的是拥有 Sails.js 版本 12.2、Node 版本 8.2.1 和 NPM 5.3.0,这很有效。感谢您的回答
    【解决方案2】:

    处理它的最佳方法是更新您的package.json 以使用engines 像这样

    "description": "a Sails application",
      "keywords": [],
      "engines": {
        "node": "6.10.1",
        "npm": "5.3.0"
      },
    

    在尝试推送到 heroku 时遇到此问题,这似乎是 @m-t 指定的 npm 版本,并且还指定上述版本使 ibm bluemix 将其作为默认节点引擎而不是使用最新的稳定版版本。

    并且不要忘记始终直接指定您的节点和 npm 版本,而不是添加 tildecaret,这只是为了安全起见。查看https://stackoverflow.com/a/22345808/5836034了解更多关于tilde and caret的信息

    您仍然可以查看@sai-vennam 回答here 了解更多信息

    【讨论】:

    • 如果您在代码框中向下滚动,该包已经在使用引擎
    • 使用引擎时要直接,直接放版本,以确保安全,而不是使用>或^ @ScottN
    • 试一试@ScottN 让引擎像这里指定的那样,看看结果
    【解决方案3】:

    所以我将 package.json 文件中的sails 版本从0.12 回滚到0.11,并且部署良好。所以 CF PUSH 和最新的sails 版本在Bluemix 上并不能很好地相处。这是使用 Node 8.0 和 NPM 版本 ^5.0.x

    【讨论】:

    • 我正在使用sails v 0.12.13,通过更新package.json上的engine运行良好
    • 它在哪里运作良好?蓝混合?这是问题不在本地的地方。我可以在任何地方运行这个项目,除了 Bluemix。如问题中所述,package.json 文件指定了引擎,这是我循环浏览所有节点和 npm 版本的方式。
    • 它在云构建上本地工作它失败了,因为你指定你的引擎使用最新的主要版本stackoverflow.com/a/22345808/5836034
    猜你喜欢
    • 2022-07-03
    • 1970-01-01
    • 2021-02-13
    • 2022-12-14
    • 2020-12-15
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    相关资源
    最近更新 更多