2015-02-11 114 views
4

在specificed文件夹记分牌我已经安装了express.js,我试图在CLI执行“故宫开始”,然后我得到的错误是:如何解决Opensift中的express.js错误?

0 info it worked if it ends with ok 
1 verbose cli [ 'node', '/opt/rh/nodejs010/root/usr/bin/npm', 'start' ] 
2 info using [email protected] 
3 info using [email protected] 
4 verbose run-script [ 'prestart', 'start', 'poststart' ] 
5 info prestart [email protected] 
6 info start [email protected] 
7 verbose unsafe-perm in lifecycle true 
8 info [email protected] Failed to exec start script 
9 error [email protected] start: `node app.js` 
9 error Exit status 8 
10 error Failed at the [email protected] start script. 
10 error This is most likely a problem with the application-name package, 
10 error not with npm itself. 
10 error Tell the author that this fails on your system: 
10 error  node app.js 
10 error You can get their info via: 
10 error  npm owner ls application-name 
10 error There is likely additional logging output above. 
11 error System Linux 2.6.32-504.3.3.el6.x86_64 
12 error command "node" "/opt/rh/nodejs010/root/usr/bin/npm" "start" 
13 error cwd /var/lib/openshift/54d99b5f5973ca0a11000120/app-root/runtime/repo/Scoreboard/scoreboard 
14 error node -v v0.10.25 
15 error npm -v 1.3.24 
16 error code ELIFECYCLE 
17 verbose exit [ 1, true ] 

有app.js的内容是:

/** 
* Module dependencies. 
*/ 

var express = require('express') 
    , routes = require('./routes') 
    , user = require('./routes/user') 
    , http = require('http') 
    , path = require('path'); 

var app = express(); 

// all environments 
//app.set('port', process.env.PORT || 3000); 

app.set('port', process.env.OPENSHIFT_NODEJS_PORT || 8080); 
app.set('ipaddr', process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1"); 

app.set('views', __dirname + '/views'); 
app.set('view engine', 'jade'); 
app.use(express.favicon()); 
app.use(express.logger('dev')); 
app.use(express.bodyParser()); 
app.use(express.methodOverride()); 
app.use(app.router); 
app.use(express.static(path.join(__dirname, 'public'))); 

// development only 
if ('development' == app.get('env')) { 
    app.use(express.errorHandler()); 
} 

app.get('/', routes.index); 
app.get('/users', user.list); 

http.createServer(app).listen(app.get('port'), function(){ 
    console.log('Express server listening on port ' + app.get('port')); 
}); 

我不知道如何解决它,我正在寻找一个解决方案如何在Openshift中运行express,谢谢!

+2

package.json中有什么?的package.json的 – 2015-02-12 00:33:30

+1

内容是: '{ “名”: “对myApp”, “版本”: “0.0.1”, “私”:真实, “脚本”:{ “开始”: “节点app.js” }, “依赖”:{ “明示”: “3.2.5”, “玉”: “*” } }' – Ivan 2015-02-12 19:08:03

+1

显然你app.js包含了一些错误。什么是直接运行'node app.js'的输出? – 2015-03-01 02:57:36

回答

1

我知道这个问题已经打开很长时间了,但我可以将它成功部署到Openshift。

像Thimoty顾说,你的app.js有一些问题。由于您使用Express的某些功能已被弃用,因此可能会影响将应用部署到Openshift。

在Openshift中,我遇到了非常简单的问题,比如使用*来设置package.json,而不是我想要的依赖项的正确版本。

我在没有路径文件的情况下对代码做了一些更改,它在我的测试中起作用。基本上,其结果是:

的package.json

{ 
 
    "name": "test", 
 
    "version": "1.0.0", 
 
    "description": "", 
 
    "main": "server.js", 
 
    "scripts": { 
 
    "test": "echo \"Error: no test specified\" && exit 1", 
 
    "start": "node server.js" 
 
    }, 
 
    "author": "", 
 
    "license": "ISC", 
 
    "dependencies" : { 
 
    "express" : "4.9.5" //it's important to set a version, instead of using * 
 
    } 
 
}

server.js

/** 
 
* Module dependencies. 
 
*/ 
 

 
var express = require('express') 
 
    //, routes = require('./routes') 
 
    //, user = require('./routes/user') 
 
    , http = require('http') 
 
    , path = require('path'); 
 

 
var app = express(); 
 

 
// all environments 
 
//app.set('port', process.env.PORT || 3000); 
 

 
app.set('views', __dirname + '/views'); 
 
app.set('view engine', 'jade'); 
 
//app.use(express.favicon()); 
 
//app.use(express.logger('dev')); 
 
//app.use(express.bodyParser()); 
 
//app.use(express.methodOverride()); 
 
//app.use(app.router); 
 
app.use(express.static(path.join(__dirname, 'public'))); 
 

 
// development only 
 
//if ('development' == app.get('env')) { 
 
// app.use(express.errorHandler()); 
 
//} 
 

 
app.get('/', function(req, res, err) { 
 
\t res.send("You have accessed page/(root)"); 
 
}); 
 

 
app.get('/users', function(req, res, err) { 
 
\t res.send("You have accessed page /users (users)"); 
 
}); 
 

 

 
var port = process.env.OPENSHIFT_NODEJS_PORT || 8080; 
 
var address = process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1"; 
 

 
console.log("Port: " + port); 
 
console.log("Address: " + address); 
 

 
var server = app.listen(port, address, function() { 
 
\t console.log('Express server listening on port ' + port); 
 
});

总之,我刚刚删除/评论了您的库不支持或在Express中被弃用。现在使用它们,你应该从支持它们的新库中包含它们。

希望它在某种程度上有用,即使很长时间后。