在Openshift(nodejs应用程序)中使用目录(用于图像链接等)

时间:2014-12-01 23:02:50

标签: node.js openshift

我有一个我在openshift上使用节点应用程序托管的网页。它在这里 http://nodejs-volition.rhcloud.com/

我的问题很简单(虽然我没有找到其他人问过它)。如何引用包含index.html

的目录中的其他文件

例如,我想使用索引目录中的图像。我目前的图片html是

<img src="$OPENSHIFT_REPO_DIR/images/1416870991752.jpg" alt="spark core">

我也尝试过使用“images / 1416870991752.jpg”。链接到目录中的其他html文件我有同样的问题吗? 我究竟做错了什么?请帮帮忙?

1 个答案:

答案 0 :(得分:1)

正如corey112358所暗示的那样,关键在于使用nodejs主持必须定义服务器。我的应用程序已经有一个服务器文件,因此我必须修改现有服务器,而不是创建新服务器。我现在已经成功完成了它,对server.js文件进行了两处更改。

第一个更改是修改缓存。那应该是这样的......

self.zcache['index.html'] = fs.readFileSync('./index.html');
self.zcache['page2.html'] = fs.readFileSync('./page2.html');
self.zcache['sparkcoredark.jpg'] = fs.readFileSync('./sparkcoredark.jpg');

已经包含了第一行,但接下来的两行是我添加的另一个html页面和图片。

第二步是修改server.js文件的self.createRoutes部分,如下所示(默认情况下包含asciimo图像)。

self.createRoutes = function(){         self.routes = {};

    self.routes['/asciimo'] = function(req, res) {
        var link = "http://i.imgur.com/kmbjB.png";
        res.send("<html><body><img src='" + link + "'></body></html>");
    };

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

       res.setHeader('Content-Type', 'image/jpg');
        res.send(self.cache_get('sparkcoredark.jpg') );

    };
};

希望有助于解决这个问题的其他任何人。感谢coreyfibonacci