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

这是我的项目结构的要点:

  • /
    • 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并加载url http://localhost:3000/public/css/main.css一切都按预期完成。

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

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

replace这个:

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

有了这个:

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

第一个问题是'public'被解释为相对于当前的工作目录。 与第二个片段,它是相对于app.js的位置 – 这是不依赖于你当前的工作目录。