在没有express.js的heroku中的node.js应用程序中部署路由

时间:2015-07-19 10:15:51

标签: node.js heroku

我有3个文件:

  1. server.js包含node.js服务器(使用WebSocket-Node)
  2. client.js包含websocket代码
  3. 包含html内容的
  4. frontend.html包含client.js文件。
  5. package.json:

    {
      "name": "kapp",
      "version": "1.0.0",
      "description": "Lightweight peer to peer",
      "main": "frontend.html",
      "scripts": {
        "test": "node server.js"
      },
      "engines": {
        "node": "0.10.x"
      },
      "author": "Kaustav Ray",
      "license": "MIT",
      "dependencies": {
        "websocket": "^1.0.19"
      }
    }
    

    server.js

    var WebSocketServer = require('websocket').server;
    var http = require('http');
    
    var server = http.createServer(function(request, response) {
    
    });
    server.listen(1337, function() { });
    
    
    wsServer = new WebSocketServer({
        httpServer: server
    });
    
    
    wsServer.on('request', function(request) {
        var connection = request.accept(null, request.origin);
    
    
        connection.on('message', function(message) {
            if (message.type === 'utf8') {
    
            }
        });
    
        connection.on('close', function(connection) {
    
        });
    });
    

    client.js

    $(function () {
    
        window.WebSocket = window.WebSocket || window.MozWebSocket;
    
        var connection = new WebSocket('ws://127.0.0.1:1337');
    
        connection.onopen = function () {
    
        };
    
        connection.onerror = function (error) {
    
        };
    
        connection.onmessage = function (message) {
    
            try {
                var json = JSON.parse(message.data);
            } catch (e) {
                console.log('This doesn\'t look like a valid JSON: ', message.data);
                return;
            }
            // handle incoming message
        };
    });
    
      

    本地文件夹结构:

         
        
    1. 的.git
    2.   
    3. node_modules //包含websocket
    4.   
    5. client.js
    6.   
    7. frontend.html
    8.   
    9. server.js
    10.   
    11. 的package.json
    12.   

    但不知怎的,我的应用程序没有运行并显示应用程序错误!

    我想首先启动nodejs服务器并打开frontend.html。

    因为我第一次开始使用nodejs和heroku无法理解确切的问题!

    1. 路由中是否存在问题或其他因素导致此错误?
    2. express.js是否必须路由?

1 个答案:

答案 0 :(得分:1)

Heroku要求您提供Procfile,这是一个简单的文件,告诉Heroku如何实际启动您的应用,或在scripts.start中指定package.json

// Procfile
web: node server.js

// package.json
"scripts": {
  "start": "node server.js"
},

https://devcenter.heroku.com/articles/nodejs-support#default-web-process-type https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction