npm ERR! 无法读取未定义的属性'暂停'
我试图将Sails.js应用程序部署到Bluemix,并且在Bluemix上的工具链的部署阶段(当调用CF PUSH命令时)出现以下错误:
npm ERR! 无法读取未定义的属性'暂停'
我知道跟踪到npm-error.log文件,但是,我一直无法得到它,因为我们不能ssh看到文件中有什么,因为应用程序处于“关闭”状态后,部署。
这个相同的代码已经在8天前用Bluemix中的Cf push {app name}}和一个简单的构建和部署工具链成功部署了。
在构建阶段,我可以运行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版本 - 更改依赖关系版本以包含^前缀-removed所有依赖关系,但在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"
},
得到了这个问题,而试图推到heroku
,这似乎是由@mt指定的NPM版本,并同时指定版本,像上面让IBM bluemix把它捡起来作为默认节点引擎而是采用了最新的稳定版本的。
并且不要忘记始终直接指定节点和npm版本,而不是添加tilde
或caret
,这只是为了安全起见。 查看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
链接地址: http://www.djcxy.com/p/27661.html