以下是我的项目结构的要点:
这是我的超级简单的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
。
有没有办法解决这个问题,以便我可以从任何目录运行我的项目?
答案 0 :(得分:2)
替换它:
app.use('/public', express.static('public'));
用这个:
var path = require('path');
app.use('/public', express.static(path.join(__dirname, '../public')));
第一个代码段的问题是'public'
被解释为相对于当前工作目录。使用第二个代码段,它相对于app.js
的位置 - 这不取决于您当前的工作目录。