openshift,node.js:"不能GET /index.html"

时间:2016-01-08 12:20:16

标签: node.js openshift

我在Openshift上有应用程序(Node.js 0.10,MongoDB 2.4)

我已遵循此处的说明 developers.openshift.com/en/getting-started-debian-ubuntu.html
我已经成功修改了我的应用程序 当我从此网址http://kunsento-mbtest1.rhcloud.com/运行时 它工作正常。你可以尝试一下 如果我尝试使用此网址http://kunsento-mbtest1.rhcloud.com/index.html 我得到"无法获得/index.html"

如果我尝试访问子目录中的任何其他html文件,我会收到同样的错误。

请您建议如何解决?

谢谢

P.S。我在这里找到了类似的票;

openshift node.js Cannot Get /

但我不明白如何应用解决方案"您确定提交公用文件夹吗?"

1 个答案:

答案 0 :(得分:1)

当您检查OpenShift的nodejs盒式磁带附带的server.js时,您会看到已定义/路由以提供索引文件:

self.routes['/'] = function(req, res)
{
    res.setHeader('Content-Type', 'text/html');
    res.send(self.cache_get('index.html') );
};

...因此,在访问您的域名时,您将获得索引文件。

路由通常是为Web应用程序提供的任何其他功能创建的。

如果您想提供静态文件,可以像the example you have linked中一样创建公共目录。
假设您正在使用nodejs盒式磁带附带的server.js,您只需将self.app.use(express.static(__dirname + '/public'));添加到initializeServer函数中即可提供public目录的内容。为清晰起见,以下是整个块的外观:

/**
 *  Initialize the server (express) and create the routes and register
 *  the handlers.
 */
self.initializeServer = function() {
    self.createRoutes();
    self.app = express.createServer();

    //  Add handlers for the app (from the routes).
    for (var r in self.routes) {
        self.app.get(r, self.routes[r]);
    }

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

您可能还想查看this了解更多详情。