2013-09-01 3 views
0

У меня был рабочий проект, но я решил попробовать Visual Node (http://www.visualnode.info/readme) для работы с node.js в среде Visual Studio.Использование визуального узла вызывает экспресс, чтобы не обслуживать статические файлы

По какой-то причине, что линия не влияет на экспресс для обслуживания статических файлов:

app.use(express.static(path.join(__dirname, 'client'))); 

При попытке:

res.sendfile('client/views/index.html'); 

двигатель ищет файл по ложному пути:

404 Error: ENOENT, stat 'C:\Windows\system32\client\views\index.html' 

Вопрос: 'C:\Windows\system32\'?

Вместо этого должна быть папка моего проекта.

ответ

0

Во-первых, это:

app.use(express.static(path.join(__dirname, 'client')));

является адаптер промежуточного программного, так что экспресс будет автоматически обслуживать статические файлы из папки client (используя __dirname), чтобы установить текущий локальный каталог в качестве ссылки.

При использовании

res.sendfile('client/views/index.html');

узел и выразить будет использовать текущий локальный каталог + путь, чтобы служить файл. Однако, похоже, что при использовании Visual Node неправильная настройка локального пути на место хранения приложения, поэтому путь, к сожалению, установлен в каталог system32.

Вы можете увидеть, как приложение должно работать, если вы переключитесь на каталог, в котором приложение хранится и запустить:

> cd c:\dev\greatwebapp 
> node app.js 

(подменить настоящие имена, конечно)

Вы будете увидеть что-то вроде:

Express server listening on port 3000 

Затем вы должны иметь возможность перемещаться браузер на один из ваших маршрутов/путей и файл должен отображаться правильно. Похоже, это может быть проблема с Visual Node: http://redgatesupport.red-gate.com/entries/25428576-Working-Directory-Issues.

Чтобы обойти эту проблему, вы можете:

res.sendfile(__dirname + '/client/views/index.html');

+0

Надеюсь, они получат это исправить. Спасибо за обходное решение! – ohadinho