从不同的目录运行节点应用程序使静态文件夹行为有趣

时间:2016-09-01 02:33:44

标签: javascript node.js express backend

以下是我的项目结构的要点:

  • /
    • node_modules /
    • 公共/
      • CSS /
        • 的main.css
    • 服务器/
      • 视图/
      • app.js
    • 的package.json

这是我的超级简单的app.js:

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

app.use('/public', express.static('public'));


app.listen(3000, function(){
    console.log('live at http://localhost:3000');
});

现在,当我在根目录中时,运行node server.app.js并加载网址http://localhost:3000/public/css/main.css,所有内容都按预期完美加载。

但是,当我在服务器/目录中时,运行node app.js并加载相同的网址,我收到错误Cannot GET /public/css/main.css

有没有办法解决这个问题,以便我可以从任何目录运行我的项目?

1 个答案:

答案 0 :(得分:2)

替换它:

app.use('/public', express.static('public'));

用这个:

var path = require('path');

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

第一个代码段的问题是'public'被解释为相对于当前工作目录。使用第二个代码段,它相对于app.js的位置 - 这不取决于您当前的工作目录。