从不同目录运行节点应用程序会使静态文件夹变得有趣
这是我的项目结构的要点:
- /
- node_modules /
- 上市/
- CSS /
- 的main.css
- 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
的位置 – 这是不依赖于你当前的工作目录。