В настоящее время это не поддерживается, и добавить его самостоятельно нелегко.
Весь материал маршрутизации скрыт глубоко в коде сервера, и в качестве бонуса нет раскрытия маршрутов.они сами.
Я копался в источнике, а также проверил последнюю версию Express и промежуточного программного обеспечения Connect, но по-прежнему не поддерживается такая функция, вам следует открыть вопрос либо на Connect или Экспресс сам.
Между тем ...
Попробуйте сами, вот быстрый и простой способ с одной строкой кодаизменено.
В ~/.local/lib/node/.npm/express/1.0.0/package/lib/express/servers.js
найдите:
// Generate the route
this.routes[method](path, fn);
Это должно быть около строки 357
, замените это на:
// Generate the route
this.routes[method](((self.settings.base || '') + path), fn);
Теперь просто добавьтенастройка:
app.set('base', '/myapp');
Это прекрасно работает с путями, которые являются простыми строками, для поддержки RegEx вам придется самостоятельно взломать промежуточное ПО маршрутизатора, лучше подать проблему в этом случае.
Что касается статического провайдераs, просто добавьте /mypapp
при настройке.
Обновление
Сделано это также с RegExp:
// replace
this.routes[method](baseRoute(self.settings.base || '', path), fn);
// helper
function baseRoute(base, path) {
if (path instanceof RegExp) {
var exp = RegExp(path).toString().slice(1, -1);
return new RegExp(exp[0] === '^' ? '^' + base + exp.substring(1) : base + exp);
} else {
return (base || '') + path;
}
}
Я толькопроверил это с помощью нескольких выражений, так что это не проверено на 100%, но теоретически оно должно работать.
Обновление 2
Подана проблема с патчем:
https://github.com/visionmedia/express/issues/issue/478