快递文件不提供应用程序

时间:2014-11-30 23:38:27

标签: angularjs node.js express

我的快递文件看起来像这样:

var express = require('express');
var http = require('http');
var conf = require('./conf');

var app = express();


/*********** start server ************/
http.createServer(app).listen(conf.port, function () {
    console.log('Express server listening on port ' + conf.port);
});


/****** Serving Static pages  *********/
app.use(express.static(__dirname + '/../client/dist/src/'));

dist文件夹看起来像这样:

   dist/
     jquery_lib.js
     angular_lib.js
     app.js
     src/
       index.html
       partials/
          state1.tpl.html
          state2.tpl.html

当我访问时

 http://localhost:12345/index.html 

在浏览器中,浏览器无法找到

jquery_lib.js,angular_lib.js和app.js index.html引用如下文件:

<script src="../jquery_lib.js"></script>
    <script src="../angular_lib.js"></script>
    <script src="../app.js"></script>

浏览器无法找到这些文件的任何线索?

2 个答案:

答案 0 :(得分:0)

express.static()仅提供传递给它的基本目录中的文件。如果您能够突破基本目录并访问父目录/文件,那将是一个很大的安全漏洞。

请将jquery_lib.jsangular_lib.js个文件放在src/的某处,并相应地更新html src=值。

答案 1 :(得分:0)

您还可以执行以下操作:

  app.use('/assets',express.static(path.join(__dirname,'public/assets')));

现在通过这样做,您将获得的好处是,在您的html或您使用的任何模板引擎中,您可以将您的文件放在公共/资产中并将其称为 src = "assets/xyz/abc.js"

通过这种方式,管理公共图书馆变得非常容易。