运行 来自不同目录的节点应用程序使静态文件夹变得有趣
Running node app from a different directory makes static folder act funny
这是我的项目结构的要点:
- /
- node_modules/
- public/
- 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
一切按预期完美加载。
但是,当我在 server/ 目录中时,运行 node app.js
,并加载相同的 url,我得到错误 Cannot GET /public/css/main.css
.
有没有办法解决这个问题,以便我可以从任何目录 运行 我的项目?
替换为:
app.use('/public', express.static('public'));
有了这个:
var path = require('path');
app.use('/public', express.static(path.join(__dirname, '../public')));
第一个片段的问题在于 'public'
被解释为相对于当前工作目录。对于第二个片段,它是相对于 app.js
的位置的——它不依赖于您当前的工作目录。
这是我的项目结构的要点:
- /
- node_modules/
- public/
- 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
一切按预期完美加载。
但是,当我在 server/ 目录中时,运行 node app.js
,并加载相同的 url,我得到错误 Cannot GET /public/css/main.css
.
有没有办法解决这个问题,以便我可以从任何目录 运行 我的项目?
替换为:
app.use('/public', express.static('public'));
有了这个:
var path = require('path');
app.use('/public', express.static(path.join(__dirname, '../public')));
第一个片段的问题在于 'public'
被解释为相对于当前工作目录。对于第二个片段,它是相对于 app.js
的位置的——它不依赖于您当前的工作目录。