【问题标题】:Trying to get node.js app to work on cPanel试图让 node.js 应用程序在 cPanel 上工作
【发布时间】:2021-02-28 02:39:38
【问题描述】:

我遵循了YouTube 上的教程,该教程展示了如何制作与套接字一起使用的 node.js 服务器。 这是最终的工作 server.js 代码。

    var express = require('express');

    var app = express()
    var server = app.listen(3000)

    app.use(express.static('public'))

    console.log('My sockets server is running.');

    var socket = require('socket.io')

    var io = socket(server)

    io.sockets.on('connection', newConnection)

    function newConnection(socket) {
        console.log('new connection: ', socket.id)
    
        socket.on('send-msg', data => {
            console.log('send-msg');
            socket.broadcast.emit('send-msg', data)
        })
    }

当我将它托管在本地服务器 (http://localhost:3000/) 上时,此代码有效。现在我正在尝试使用 cPanel 使其在线,我正确设置了库(我认为)并且我使用了相同的代码,但它不起作用。我刚刚在显示屏中弹出Cannot GET /mychat

我尝试进行一些更改:

    ...

    const hostname = '[the ip address of my server]';
    const port = 3000; // also tried port 22, same issue

    var app = express()
    var server = app.listen(port, hostname, () => {
        console.log(`Server running at http://${hostname}:${port}/`);
    });

    ...

但我遇到了同样的问题。

当cPanel第一次创建server.js文件时,它做了这样的代码:

    var http = require('http');
    var server = http.createServer(function(req, res) {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        var message = 'It works!\n',
            version = 'NodeJS ' + process.versions.node + '\n',
            response = [message, version].join('\n');
        res.end(response);
    });
    server.listen();

这是工作,但对我没有帮助。

这是网站的基本结构:

    root
      - package.json
      - package-lock.json
      - server.js
      > node_modules (folder with all of the required files including express and socket)
      > public
          - index.html
          - script.js
          - styles.css

【问题讨论】:

    标签: javascript node.js sockets websocket cpanel


    【解决方案1】:

    您必须定义路径和目录,以便服务器可以接收和发送 Httpresponce。对于主目录,它将是:

    app.get('/' (req, res) => {
         res.send('Home page') 
    });
    

    在这种情况下,主目录只是 '/' 并且服务器会收到一个请求,只要客户端访问该 url 然后它就会响应,在这种情况下使用文本文档“主页”。

    【讨论】:

    • 我把这个放在我的代码什么地方,Home page 是什么?我需要它指向./public/index.html
    • 我的 JS 很好。我一生都无法弄清楚您的代码,因为我没有意识到您遗漏了逗号。最终,我找到了另一个看起来和你相似的魔法,并意识到为什么你的魔法从那以后就没有了。此外,您的回答并没有真正回答我的问题,也没有给我足够的信息来查找它。我最终找到了解决问题的方法,并让代码以不同的方式工作。
    猜你喜欢
    • 2021-12-27
    • 2013-03-08
    • 2015-08-19
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    相关资源
    最近更新 更多