我是一个初学者,我正在尝试在Web上部署可在本地运行的nodeJS应用程序。我正在使用Jelastic云。我创建了一个环境。现在,当我要从本地文件进行部署时,必须提供一个.zip文件。
。
我尝试将其压缩为.gif并使用此.gif。 Jelastic说部署成功,但是随后启动服务器失败。
所以我想知道它是否是一个很好的文件,而且我不确定package.json应该包含什么(实际上只有依赖项(名称和版本))。 另外,我不确定我必须在服务器文件中为server.listen提供哪些参数。
如果您有其他建议,我也会很高兴。 我也在heroku上尝试过,它返回npm ERR:缺少脚本:开始
有代码:
server.js:
var http=require("http");
var express = require('express');
var app =express();
var mainServer=http.createServer(app);
var fs = require('fs');
var io =require('socket.io'). listen(mainServer);
var users=[];
var waitingRoomSize=0;
var readyToPlay=[];
var nbUser=0;
var accounts = JSON.parse(fs.readFileSync(__dirname+'/accounts.json',{encoding:'utf8'},function(err){if(err){throw err;}}));
var clockOfGames = 0;
//var p=0;
var TimePassing = setInterval(function(){clockOfGames++},50);
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
app.set('views', __dirname);
function account(_pseudo,_mdp){
...
}
function user(pseudo,id,_mainId){
...
}
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
app.get('/onGamePage/:mId',function(req, res){
var x = String(req.params.mId).substring(0,11);
if (x=='heavenStone'){
var prm = req.params.mId;
res.render('onGamePage.html',{mainId:prm});
}
});
app.get('/index/:mId',function(req, res){
var x = String(req.params.mId).substring(0,11);
if (x=='heavenStone'){
var prm = req.params.mId;
res.render('index.html',{mainId:prm});
}
});
app.use(express.static(__dirname+"/style/"));
io.sockets.on('connection', function(socket){
...
});
mainServer.listen(80);
Package.json:
{
"name": "TM",
"start":"node server.js",
"version": "0.1.0",
"dependencies": {
"ejs": "^2.6.1",
"ent": "~0.1.0",
"express": "^3.21.2",
"fs": "0.0.1-security",
"mysql": "^2.16.0",
"node-mysql-admin": "^0.1.5",
"nodeadmin": "^0.1.2",
"socket.io": "^1.2.1"
},
"author": "Lenny"
}
然后有一些html。
答案 0 :(得分:0)
对于部署NodeJS应用,我建议您使用PaaS服务,例如Heroku。
但是在部署应用程序之前,您应该先创建它;)
这些是创建新NodeJS项目时的一些最佳实践:
cd
进入该文件夹; npm init
以生成您的项目初始文件(例如package.json)。它将询问您一些信息,您可以填写所需的内容,或者只需在每个条目上按Enter键即可。app.js
或index.js
的文件。这将是您的应用程序入口点; 在package.json中,将此文件设置为开始脚本:
"scripts": {
"start": "NODE_ENV=production node app.js"
}
npm install --save packagename
。它将依赖性保存在package.json文件中。答案 1 :(得分:0)
问题出在package.json文件上。现在就是这样:
{
"scripts":{
"start": "node app.js"
},
"name": "TM",
"version": "0.1.0",
"dependencies": {
"ejs": "^2.6.1",
"ent": "~0.1.0",
"express": "^3.21.2",
"fs": "0.0.1-security",
"socket.io": "^1.2.1"
},
"author": "Lenny"
}
但是我仍然没有完全了解jelastic,我可以通过在控制台中启动来运行它,而且我不允许在端口80上运行它,不明白为什么。