我需要哪些文件在Web上部署NodeJS应用

时间:2019-03-01 09:43:46

标签: node.js web

我是一个初学者,我正在尝试在Web上部署可在本地运行的nodeJS应用程序。我正在使用Jelastic云。我创建了一个环境。现在,当我要从本地文件进行部署时,必须提供一个.zip文件。

My app file looks like that

我尝试将其压缩为.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。

2 个答案:

答案 0 :(得分:0)

对于部署NodeJS应用,我建议您使用PaaS服务,例如Heroku。

但是在部署应用程序之前,您应该先创建它;)

这些是创建新NodeJS项目时的一些最佳实践:

  • 为您的项目创建一个文件夹,然后cd进入该文件夹;
  • 键入npm init以生成您的项目初始文件(例如package.json)。它将询问您一些信息,您可以填写所需的内容,或者只需在每个条目上按Enter键即可。
  • 现在您可以开始创建包含文件和文件夹的项目。确保在主文件夹中创建一个名为app.jsindex.js的文件。这将是您的应用程序入口点;
  • 在package.json中,将此文件设置为开始脚本:

    "scripts": {
        "start": "NODE_ENV=production node app.js"
    }
    
  • 每次您都要从NPM安装新的依赖项时,请确保按照以下步骤安装它:npm install --save packagename。它将依赖性保存在package.json文件中。
  • 现在是时候在Heroku或其他PaaS服务上进行部署了。为此,您必须已经安装了GIT,您可以下载并安装它,这非常简单。
  • 在Heroku上遵循此指南进行部署:DEPLOY ON HEROKU

答案 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上运行它,不明白为什么。