npm ERR! 无法读取未定义的属性“暂停”–Bluemix

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

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

我知道跟踪到npm-error.log文件,但是,我一直无法得到它,因为我们不能ssh中看到什么文件中的应用程序处于其“关”状态后坏部署。

这个相同的代码已经成功地在Cf push {app name}}中部署,并且在8天前通过Bluemix中的一个简单的构build和部署工具链。

在构build阶段,我可以运行Npm安装和npm更新就好了。 然而,似乎在部署阶段再次这样做,无论它失败了。 这里是关于这个失败的一些细节

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并不是很好玩。

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

这发生在我身上。 我必须回滚npm:5.3.0的prev版本,现在它正在工作。 (顺便说一下:macOS)

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

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

处理它的最好方法是更新你的package.json来使用像这样的engines

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

在尝试推送到似乎是由@mt指定的npm版本的heroku时 , 遇到了这个问题,并且指定了上述版本,使得ibm bluemix将其选为默认节点引擎,而不是使用最新的稳定版本。

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

你仍然可以在这里查看@ sai-vennam的答案以获取更多信息

所以我把package.json文件中的sails版本从0.12调回到0.11,并且部署的很好。 所以CF PUSH和最新的风帆版本在Bluemix上并不相配。 这是使用节点8.0和NPM版本^ 5.0.x