无法使用express加载静态文件

时间:2014-03-03 18:28:03

标签: node.js express

尝试了我能想到但可以使用快速服务器加载静态文件的所有可能组合 目录结构

app
--todoApp.html
----server.js //node file
----jquery.js
----backbone.js

节点服务器

var http = require('http'),
    express = require('express');

var app = express();
app.listen(3000);
app.set('views', __dirname);
app.use(express.static(__dirname));
app.engine('html', require('ejs').renderFile);
console.log(__dirname);
app.get('/', function(req, res){
    //res.send('Whats up?');
    res.render('../todoApp.html');
});

__dirname打印为app/js这是正确的。但页面加载时出现错误the server responded with a status of 404 (Not Found) http://localhost:3000/js/jquery.js

HTML加载脚本如下:

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/underscore-min.js"></script>
<script type="text/javascript" src="js/backbone.js"></script>

我尝试了很多东西,但它不起作用。
试过以下: app.use('/js',express.static(__dirname)); 要么 app.use('/',express.static(__dirname));

请帮忙。

1 个答案:

答案 0 :(得分:1)

由于当前目录已经是js目录,因此在加载JavaScript文件时无需在<script>标记中指定它:

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="underscore-min.js"></script>
<script type="text/javascript" src="backbone.js"></script>

在express中设置静态目录时,该目录实际上成为root目录,因此所有静态文件路径都应该相对于该目录。

此外,将服务器端代码放在静态目录中可能不是一个好主意,因为这样任何使用您服务器的人都可以访问您的服务器端代码。最好将所有静态文件放在不同的目录中,并将其设置为express中的静态目录。