2013-07-03 3 views
3

Недавно я создал быстрое одностраничное приложение с использованием express.js, и это действительно моя первая js-инфраструктура (на самом деле, мой первый проект js, поэтому я действительно новичок в это). У меня есть подписка на новые шрифты typography.com, и мне трудно найти папку «fonts», которую я размещаю в общей папке. Есть ли способ добавить папку и указать маршрут?Получение express.js для отображения общей папки

Вот мой 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

Можете ли вы показать свой код? – knshn

ответ

12

Пожалуйста, используйте express.static настройки:

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

и поместите папку fonts в этой public папке.

+1

Я добавил это к моему app.js, а также заменил строку app.use (express.static (path.join (__ dirname, 'public'))); (Я пробовал в обоих направлениях), но ни один из них не смог найти папку шрифтов в общедоступной среде, или даже если я поместил ее в папку стилей. – Spentacular

+0

Вы используете какой-либо процесс проксирования или доступа к узлу непосредственно на порту, который он прослушивает? – moka

+0

(Извините, я не совсем понимаю). Все, что я сделал, это добавить web: node app.js в свой Procfile, чтобы он мог размещать на герою. Кроме этого, я изменил шаблон по умолчанию и таблицу стилей, ничего больше. – Spentacular

3

Если вы используете Heroku, вы можете захотеть взглянуть на эту тему: Deploy Nodejs on Heroku fails serving static files located in subfolders

Парень объясняет, что он боролся с «__dirname», пока он не уточнил последнюю версию НПМ в его package.json:

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

Хотя все это, вероятно, бесполезно, если вы уже пытаетесь локально.

+0

человек, я этого не заявлял, но, к сожалению, я не могу заставить его работать локально.Это почти в тот момент, когда мне нужно прекратить использование узла или просто использовать typekit вместо:/ – Spentacular

+0

У вас проблема с узлом. Не могли бы вы поместить любой файл в/fonts/dir и перейти непосредственно в браузере к этому файлу? Если это работает, то публичные статические файлы работают отлично, и у вас возникли проблемы с тем, как вы пытаетесь их сослаться. – moka

Смежные вопросы