Nuxt: TypeError: blogRoutes не повторяется - PullRequest
0 голосов
/ 20 сентября 2019

Я тестирую Nuxt, в частности, как генерировать маршруты для статического режима сайта.При развертывании в Netlify я получаю ошибку TypeError: blogRoutes is not iterable в журналах развертывания.Что это значит, так как кажется, что вывод обоих запросов - это массивы простых строк.Любая помощь будет принята с благодарностью.

Ниже приведен слегка надуманный пример, так как я делаю два вызова Contentful, на самом деле это будет Shopify и Contentful.

generate: {
    routes: () => {
        const client = contentful.createClient(config)

        const blogRoutes = client
            .getEntries({
                content_type: 'blogPost'
            })
            .then(response => {
                return response.items.map(
                    entry => `/blog/${entry.fields.slug}`
                )
            })
        const collectionRoutes = client
            .getEntries({
                content_type: 'collection'
            })
            .then(response => {
                return response.items.map(
                    entry => `/collections/${entry.fields.slug}`
                )
            })
        const routes = [[...blogRoutes, ...collectionRoutes]]

        return routes
    }
}

1 Ответ

1 голос
/ 23 сентября 2019

blogRoutes и collectionRoutes - оба обещания, а не массивы.Они преобразуются в массивы (я предполагаю), но вам нужно либо дождаться их, либо использовать Promise.all ().

Также обратите внимание, что похоже, что вы не возвращаете правильные данные, вы хотите вернуть массив строк, а не массив строк.

generate: {
    routes: async () => { // add async here
        const client = contentful.createClient(config)

        const blogRoutes = await client // add await here
            .getEntries({
                content_type: 'blogPost'
            })
            .then(response => {
                return response.items.map(
                    entry => `/blog/${entry.fields.slug}`
                )
            })
        const collectionRoutes = await client // add await here
            .getEntries({
                content_type: 'collection'
            })
            .then(response => {
                return response.items.map(
                    entry => `/collections/${entry.fields.slug}`
                )
            })

        const routes = [...blogRoutes, ...collectionRoutes] // return a single array of strings

        return routes
    }
}
...