У меня есть приложение NextJS, и я использую next-маршруты для обработки всей маршрутизации.
Мой модуль маршрутизации в настоящее время выглядит следующим образом:
const routes = require('next-routes')();
const { getEntries } = require('../data/contentful');
module.exports = async () => {
const globalSettings = await getEntries({
content_type: 'globalSettings',
});
routes
.add('caseStudies', `/${globalSettings.fields.caseStudiesSlug}`, 'caseStudies')
.add('caseStudy', `/${globalSettings.fields.caseStudiesSlug]}/:slug`, 'caseStudy')
.add('home', `/`, 'index')
.add('page', `/:slug*`, 'page'));
return routes;
};
Я могу заставить это работать на стороне сервера, но чтобы использовать next-маршруты на стороне клиента, мне нужен этот модуль для немедленного возврата объекта маршрутов, а не асинхронной функции.Например,
const routes = require('next-routes')();
const { getEntries } = require('../data/contentful');
// Do this first, then module.exports
const globalSettings = await getEntries({
content_type: 'globalSettings',
});
module.exports = routes
.add('caseStudies', `/${globalSettings.fields.caseStudiesSlug}`, 'caseStudies')
.add('caseStudy', `/${globalSettings.fields.caseStudiesSlug]}/:slug`, 'caseStudy')
.add('home', `/`, 'index')
.add('page', `/:slug*`, 'page'));
Это не работает, потому что await
должно быть внутри асинхронной функции.Как я могу завершить мой асинхронный вызов API перед выполнением моего module.exports объекта маршрута?