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

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

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> 

然后我有我需要app.js server.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文件夹及其子文件夹中的静态文件?

这很简单,服务器不能通过你在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')); 

将需要改变的path:

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

阅读这篇文章 ,了解更多关于server.js的信息