express.static
и res.sendFile
ничего не знают друг о друге. Они happen to share a lot of the same internals, но на самом деле не связаны.
Вы можете разместить test.html
, где хотите, а затем ссылаться на него с помощью встроенного модуля Node path
. Например, если ваша структура файла выглядит следующим образом:
test.html
real-app/
├── app.js
├── node_modules/
└── package.json
Тогда вы можете отправить test.html
так:
var path = require('path');
// ...
app.get('/test', function(req, res) {
var testHtmlPath = path.resolve(__dirname, '..', '..', 'test.html');
res.sendFile(testHtmlPath);
});
PS: Я бы не рекомендовал путь вы посылаете статический файлы. Случая файлы из того же каталога, что и ваш код приложения (что означает то, что означает __dirname
), может вызвать code disclosure, которые хакеры могут использовать для использования проблем в вашем коде. Например, если хакер посетил этот URL:
http://yourapp.com/app.js
Они смогли бы увидеть app.js
, который имеет весь код вашего приложения. Вы не хотите раскрывать это хакеру! Они также могут перемещаться по таким маршрутам, как /secret-passwords.json
или другим подобным файлам.
Как правило, статические файлы помещаются в специальный каталог, который часто называют static
или public
. Вы можете служить файлы из этого каталога, как это:
var path = require('path');
// ...
var staticFilesPath = path.resolve(__dirname, 'public');
app.use(express.static(staticFilesPath));
В общем, вы должны быть очень осторожны, о передаче файлов, которые живут за пределами кода вашего приложения.
Надеюсь, это поможет!
Я писал ответ, содержащий ту же информацию, но ваш аккуратно написан. Chapeau :) – Hisham
Большое спасибо @Evan Hahn, для общей папки, я еще не реализовал, потому что я начал разрабатывать свое приложение, но, конечно же, я его создам – user3510821