【问题标题】:Which files do I need to deploy a nodeJS app on web在 web 上部署 nodeJS 应用程序需要哪些文件
【发布时间】:2019-03-01 09:43:46
【问题描述】:

我是初学者,我正在尝试在网络上部署我的 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);

包.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_modules 文件夹,您运行 npm install 命令了吗?
  • 嗯.. 不,我不知道我必须在哪里这样做...
  • 你关注jelastic.com/blog/nodejs-hosting-paas博客了吗?
  • 我知道,但我不太明白。我实际上不知道该怎么做,我的部署在我尝试使用链接时返回错误 502,node_module 文件夹中应该有什么,我在哪里可以运行命令?

标签: node.js web


【解决方案1】:

对于部署 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

【讨论】:

  • --save 是现在的默认值
  • 我的应用程序已经创建,当我在终端中启动它(node app.js)时,在导航中工作(使用 localhost:XX)。所以现在我想用jelastic cloud部署它,但我实际上什么都不懂。
  • 我用heroku试过了,没用。它返回 npm 错误缺少脚本启动。我的 package.json 包含“start”:“node server.js”,所以我不明白错误。
【解决方案2】:

问题出在 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端口上运行它,不明白为什么。

【讨论】:

  • 请说明您安装应用程序的方式。如部署指南 (docs.jelastic.com/deployment-guide) 所示,通过单击“部署”按钮进行部署,无需任何其他操作。如果您通过命令行(WebSSH、SSH 等)手动部署它 - 您在容器中启动第二个服务器,您应该使用不同的端口。
  • 我通过单击按钮部署来部署它,我使用一个 zip 文件,它是环境中唯一的服务器。日志返回:“正在启动 nodejs 服务器:[FAILED]”。我可以通过 ssh 控制台启动它:node ROOT/TM/app.js(TM 是 .zip 文件的名称),然后它可以完美运行,但是当我退出控制台时服务器会关闭。
猜你喜欢
  • 1970-01-01
  • 2017-08-02
  • 1970-01-01
  • 2018-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多