nodejs搭建linux服务器如何启动项目?

自己在本地创建了express项目,访问远端mysql增删改查,提供一个接口,本地访问localhost:8080/getUsers没有问题。

在云服务器(我用的华为云)上安装nodejs,安装express,然后:

express product

创建一个express项目,把本地bin、public、routes、views、app.js、package.json更新到服务器product目录下,安装依赖npm install,而后:

pm2 start bin/www

clipboard.png

但访问接口却无法访问,端口那些也是没有问题的,服务器添加了80和8081端口。

我在bin目录下单独写了myServer.js通过node myServer.js启动却是可以访问的,myServer代码如下:

var express = require("express");
var app = express();

app.get('/', function (req, res) {
    res.send("get");
});

app.post("/", function (req, res) {
    res.send("post");
});

app.get("/list", function (req, res) {
    var mysql  = require('mysql');
    var connection = mysql.createConnection({
        host     : '**.**.**.**',
        user     : 'root',
        password : '*****',
        port: '****',
        database: 'my_project',
    });
    connection.connect();

    var sql = 'SELECT * FROM product';
    connection.query(sql,function (err, result) {
        if(err){
            console.log('[SELECT ERROR] - ',err.message);
            return;
        }

        res.send(result);
    });
});

var server = app.listen(8081, function () {
    var host = server.address().address;
    var port = server.address().port;
    console.log('服务器启动host:' + host + ',port: ' + port);
});

这里使用119...**:8081/list是可以获取数据的

clipboard.png

如果我直接使用node bin/www启动会报错找不到Product.js

clipboard.png

这到底怎么回事?
另外问一问node直接启动和pm2启动的区别?

以下是远端目录:

clipboard.png

其他截图如下:
本地routes:
clipboard.png

product.js:

function Product() {
    this.name;
}
module.exports = Product;

products.js:

var express = require('express');
var router = express.Router();
var Product = require('./Product');
var URL = require('url');

/**
 * 获取product列表
 */
router.get('/getProducts', function(req, res, next) {
    var product = new Product();
    var params = URL.parse(req.url, true).query;
    var productList = new Array();
    var response = {status: params.id};
    if(params.id == '1') {
        product.name = "当前用户不存在,请稍后再试!";
        productList.push(product);
        response.data = productList;
        res.send(JSON.stringify(response));
    } else {
        var mysql  = require('mysql');
        var connection = mysql.createConnection({
            host     : '119.3.2.21',
            user     : 'root',
            password : '123Rfy123@',
            port: '8635',
            database: 'my_project',
        });
        connection.connect();

        var sql = 'SELECT * FROM product';
        connection.query(sql,function (err, result) {
            if(err){
                console.log('[SELECT ERROR] - ', err.message);
                return;
            }
            // for(var i in result) {
            //
            // }
            res.send(result);
        });
    }
});

module.exports = router;



阅读 7.1k
2 个回答

感谢@typescript 提醒,原来就是大小写的问题。

新手上路,请多包涵

看着像大小写问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题