我最近使用express.js构建了一个快速的单页应用程序,这是我的第一个js框架(实际上,我的第一个js项目,所以我真的很新)。我已经订阅了新的typography.com云字体,而且我无法找到我放在公共文件夹中的“fonts”文件夹。有没有办法我需要添加文件夹并指定路线?
这是我的app.js文件:
/**
* Module dependencies.
*/
var express = require('express'),
routes = require('./routes'),
user = require('./routes/user'),
http = require('http'),
path = require('path');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static('public'));
// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
app.get('/', routes.index);
app.get('/users', user.list);
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
我根本没有对路线做过任何改动,所以它们只是默认的。
答案 0 :(得分:12)
请使用express.static
设置:
app.use(express.static(process.cwd() + '/public'));
将fonts
文件夹放在public
文件夹中。
答案 1 :(得分:3)
如果您使用的是Heroku,您可能需要查看此主题:Deploy Nodejs on Heroku fails serving static files located in subfolders
这家伙解释说他在“__dirname”中挣扎,直到他在他的package.json中指定了NPM的最后一个版本:
"engines": {
"node": "0.10.11",
"npm": "1.2.25"
}
如果这不起作用,您可以尝试:
// At the top of your web.js
process.env.PWD = process.cwd()
// Then
app.use(express.static(process.env.PWD + '/public'));
而不是“__dirname”
但是,如果你已经挣扎过localy,那么所有这些都可能毫无用处。