4

我最近使用 express.js 构建了一个快速的单页应用程序,这确实是我的第一个 js 框架(实际上,我的第一个 js 项目,所以我对此很陌生)。我订阅了新的typography.com 云字体,但无法找到放置在公用文件夹中的“字体”文件夹。有没有办法我需要添加文件夹并指定路线?

这是我的 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'));
});

我根本没有对路线进行任何更改,所以它们只是默认的。

4

2 回答 2

12

请使用express.static设置:

app.use(express.static(process.cwd() + '/public'));

并将您的fonts文件夹放在该public文件夹中。

于 2013-07-03T13:37:09.903 回答
3

如果您使用的是 Heroku,您可能需要查看此线程:在 Heroku 上部署 Nodejs 无法提供位于子文件夹中的静态文件

这家伙解释说,在他的 package.json 中指定了 NPM 的最后一个版本之前,他一直在为“__dirname”而苦苦挣扎:

"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”

但是,如果您已经在本地挣扎,那么所有这些都可能毫无用处。

于 2013-07-03T14:38:50.973 回答