ExpressJS无法在Openshift中获取/路由,但在本地它正在工作

时间:2015-11-11 00:56:45

标签: javascript node.js express angular-ui-router openshift

我的项目有以下结构。

server.js
/node_modules
/build
    vendor.js
    main.js
    index.html

我正在使用express和AngularJS的ui-router

server.js我有这段代码:

app.get('/*', function(req, res) {
    res.sendFile(__dirname + '/build/index.html');
});

如果我通过localhost:8080/hellothere本地它正在工作,我得到正确的页面,但是当我部署时,它没有。

在应用程序中,如果使用链接导航路线,则会将URL修改为/hellothere,但如果我更新页面或尝试直接转到绝对URL,我会得到:

Cannot GET /hellothere

我已经尝试过了:

app.get('/page1', function(req, res) {
    res.sendFile(__dirname + '/build/index.html');
});

app.get('/page2', function(req, res) {
    res.sendFile(__dirname + '/build/index.html');
});
... 

行为与'/*'相同。很好的本地,打破了云。

知道这里发生了什么吗?

homolog Website link

1 个答案:

答案 0 :(得分:0)

  

如果我通过localhost:8080/hellothere,则在本地运行,我得到   正确的页面,但部署后却没有。

可能的原因可能是在部署基本URL后可能是domainname.com/appname,而本地代码是针对localhost:portNumber而不是localhost:portNumber/appname

因此修改您的路径

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

代替

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

要在本地运行它,现在您需要localhost:portNumber/appname/hellothere