Node.js:在OpenShift上提供静态资源问题

时间:2016-03-05 23:56:17

标签: node.js express openshift

在OpenShift上我创建了基本的node0.10盒式磁带,并且有一个node_modules文件夹,我试图在index.html中获取某些文件,但它只给我404 http错误。

index.html导入的方式如下:

<script src="es6-shim/es6-shim.min.js"></script>
<script src="systemjs/dist/system-polyfills.js"></script>
<script src="angular2/es6/dev/src/testing/shims_for_IE.js"></script>   

<script src="angular2/bundles/angular2-polyfills.js"></script>
<script src="systemjs/dist/system.src.js"></script>
<script src="rxjs/bundles/Rx.js"></script>
<script src="angular2/bundles/angular2.dev.js"></script>

然后我server.js我需要app.js

...
var app = express();
require('./app.js').setApp(app);
...

app.js看起来像这样:

   var express = require('express');
   var app = express();
   var path = require("path");

   exports.setApp = function (app) {

      app.use(express.compress());

      var oneDay = 86400000;
      app.use(express.static(path.join(__dirname + '/node_modules'), {   maxAge: oneDay }));
      app.use(express.static(path.join(__dirname + '/'), { maxAge: oneDay }));

   };

可能是什么问题?为什么OpenShift无法访问node_modules文件夹及其子文件夹中的静态文件?

1 个答案:

答案 0 :(得分:1)

这很简单,服务器无法通过你在html中指向的静态文件夹读取文件,直到app.use()为止。 在server.js中添加一行 在self.initializeServer = function() {}

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

根据上面的代码,将html更改为

<script src="/public/js..."></script>

同样的事情是

self.app.use('/', express.static(__dirname + '/web'));

需要将路径更改为:

<script src="/js..."></script>

阅读this article以获取有关server.js

的更多信息