Tại sao heroku không hiểu app.get('/',function(){})

https://thuc101.herokuapp.com/

https://thuc101.herokuapp.com/ -->//Cannot GET /
https://thuc101.herokuapp.com/test/ ---->
// url —> /test/ ; protocol —> http ; host —> thuc101.herokuapp.com ; originalUrl —> /test/ ;

https://thuc101.herokuapp.com/test/aaa
url —> /test/aaa ; protocol —> http ; host —> thuc101.herokuapp.com ; originalUrl —> /test/aaa ; param —> aaa ;

Nó không chạy cái https://thuc101.herokuapp.com/

code mình đây
index.js

const express = require('express');
const app = express();
var port=process.env.PORT || 8080
app.use(express.static(__dirname + '/public'));
function obj_to_string(obj) {
    var kq = "";
    for (var name in obj) {
        kq += require('util').format(' %s ---> %s ; ', name, obj[name]);
    }
    return kq;
}
app.get('/',function(req,res){
    //res.send('hello world');
    res.render('index');
})
app.get('/test/:cmd', function (req, res) {
    var data = {
        url: req.url,
        protocol: req.protocol,
        host: req.get('host'),
        originalUrl: req.originalUrl,
        param: req.params.cmd,
    }
    res.send(obj_to_string(data));//( String(data) );//("hello");//( JSON.stringify(data) );
})
app.get('/test', function (req, res) {
    var data = {
        url: req.url,
        protocol: req.protocol,
        host: req.get('host'),
        originalUrl: req.originalUrl,
    }
    res.send(obj_to_string(data));//( String(data) );//("hello");//( JSON.stringify(data) );
})
app.listen(port, function () {
    console.log('server listen http://localhost:%s', port);
});

index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>hello world</title>
</head>

<body>
    <h2>hello world</h2>
</body>
</html>

có bạn nào giải thích giúp
chạy dưới local ok

hi, bạn đã thử xem log server chưa?
Chạy lệnh: heroku logs

Làm được rồi bạn ;

Simple node js framwork

Mình thấy bạn code hơi gọi là chưa đúng convention, hãy luyện tập trước khi nó thành thói quen xấu. Code cũng sáng hơn. Với lại bạn nên tập thay dùng var bằng khai báo constlet :

const express = require('express');
const app = express();
const obj_to_string = obj => {
    let kq = "";
    for (let name in obj) {
        kq += require('util').format(' %s ---> %s ; ', name, obj[name]);
    }
    return kq;
};

app.set('port', process.env.PORT || 8080);

app.use(express.static(__dirname + '/public'));

app.get('/', (req, res) => res.render('index'));
app.get('/test/:cmd', (req, res) => {
    const data = {
        url: req.url,
        protocol: req.protocol,
        host: req.get('host'),
        originalUrl: req.originalUrl,
        param: req.params.cmd,
    };
    res.send(obj_to_string(data));//( String(data) );//("hello");//( JSON.stringify(data) );
});
app.get('/test', (req, res) => {
    const data = {
        url: req.url,
        protocol: req.protocol,
        host: req.get('host'),
        originalUrl: req.originalUrl,
    }
    res.send(obj_to_string(data));//( String(data) );//("hello");//( JSON.stringify(data) );
});
app.listen(app.get('port'), function () {
    console.log('server listen http://localhost:%s', app.get('port'));
});

Chắc bạn mới làm quen với nodejs. Mình có thể gợi ý cho bạn sử dụng template engine như pug để tạo ứng dụng dynamic hơn. Các controller thì bạn nên tách ra file riêng. cũng như các routes.

2 Likes

hix mới đó mà đã hai tuần!!! mình đang xài ejs mình thích cái này hơn.
Mình muốn kiếm ở back end và frond end sử dụng chiêu thức giống nhau!!!:grinning:

Hi, mình cũng chỉ gợi ý thôi :3 mình suggest jade/pug vì cú pháp nó sáng sủa hơn. Về lâu vè dài cũng k dùng template engine nữa mà dùng Single Page App. Muốn sử dụng server rendering thì Sài universal web app như nextjs (react) hay angular universal…

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?