鍍金池/ 問答/Linux  HTML/ nodejs搭建linux服務(wù)器如何啟動項目?

nodejs搭建linux服務(wù)器如何啟動項目?

自己在本地創(chuàng)建了express項目,訪問遠(yuǎn)端mysql增刪改查,提供一個接口,本地訪問localhost:8080/getUsers沒有問題。

在云服務(wù)器(我用的華為云)上安裝nodejs,安裝express,然后:

express product

創(chuàng)建一個express項目,把本地bin、public、routes、views、app.js、package.json更新到服務(wù)器product目錄下,安裝依賴npm install,而后:

pm2 start bin/www

clipboard.png

但訪問接口卻無法訪問,端口那些也是沒有問題的,服務(wù)器添加了80和8081端口。

我在bin目錄下單獨(dú)寫了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('服務(wù)器啟動host:' + host + ',port: ' + port);
});

這里使用119...**:8081/list是可以獲取數(shù)據(jù)的

clipboard.png

如果我直接使用node bin/www啟動會報錯找不到Product.js

clipboard.png

這到底怎么回事?
另外問一問node直接啟動和pm2啟動的區(qū)別?

以下是遠(yuǎn)端目錄:

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 = "當(dāng)前用戶不存在,請稍后再試!";
        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;



回答
編輯回答
擱淺

感謝@typescript 提醒,原來就是大小寫的問題。

2018年2月25日 13:36