2016-03-05 61 views
2

在OpenShift上,我創建了基本的node0.10盒式磁帶,並有node_modules文件夾,我試圖在我的index.html中獲取某些文件,但它只是給我發送了404 http錯誤。Node.js:在OpenShift上提供靜態資源問題

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

這很簡單,服務器無法通過您在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的信息