在Web上部署nodeJS应用程序需要哪些文件

问题描述 投票:0回答:2

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

.

我试图在.gif压缩它并使用.gif。 Jelastic说部署是成功的,但后来他无法启动服务器。

所以我想知道它是否是一个好的文件,而且我不确定package.json上应该有什么(实际上只有依赖项(以及名称和版本))。另外我不确定我必须在服务器文件上给server.listen提供哪些参数。

如果您有任何其他建议,我也会很高兴。我也尝试过heroku,它返回一个npm ERR:缺少脚本:start

有代码:

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。

node.js web
2个回答
0
投票

对于部署NodeJS应用程序,我建议您使用像Heroku这样的PaaS服务。

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

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

  • 为项目创建一个文件夹,并将cd创建到该文件夹​​中;
  • 键入npm init以生成项目初始文件(例如package.json)。它会询问您一些信息,您可以填写您想要的内容,或者只需按下每个条目的输入;
  • 现在,您可以开始使用文件和文件夹创建项目。确保在主文件夹中创建名为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

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

© www.soinside.com 2019 - 2024. All rights reserved.