gridsome.server.js не распознает функцию addCollection

Я пробую Gridsome и Vue.js для довольно большой конверсии веб-сайта. Веб-сайт должен иметь возможность загружать данные из API. Я пытался следовать инструкциям на https://gridsome.org/docs/fetching-data/#import-from-apis - я вставил пример кода.

Однако я получаю эту ошибку, когда пытаюсь запустить gridsome develop

C: \ projects \ folder \ project> gridsome разрабатывает Gridsome v0.6.9

Инициализация плагинов ... Инициализация - 0.97s TypeError: actions.addCollection не является функцией в api.loadSource (C: \ projects \ VueJS-Research \ my-gridsome-test-VS \ gridsome.server.js: 17: 36) в process._tickCallback (внутренний / процесс / next_tick.js: 68: 7)

будучи новичком в Vue.js, я не уверен, что здесь происходит. есть ли пакет, который мне не хватает?

Я должен сказать, что если следование документации вызывает такого рода проблемы, мне, возможно, придется сделать вывод, что Gridsome недостаточно зрел для использования в коммерческих условиях, и нам, возможно, придется искать где-нибудь еще.

Любая помощь будет оценена, спасибо.

код в файле gridsome.server.js:



const axios = require('axios')

module.exports = function (api) {

    api.loadSource(async actions => {

        const { data } = await axios.get('http://dev.client.local/api/items/suggestitems?family=someCategory')

        const collection = actions.addCollection({ typeName: 'clientItems' })


        for (const item of data) {
            collection.addNode({
                label: item.label,
                labelNoFamily: item.labelNoFamily,
                path: item.path
            })
        }
    })

  //api.loadSource(({ addContentType }) => {
  //  // Use the Data Store API here: https://gridsome.org/docs/data-store-api
  //})

  api.createPages(({ createPage }) => {
    // Use the Pages API here: https://gridsome.org/docs/pages-api
  })


}

person marcel_g    schedule 12.02.2020    source источник
comment
Привет, marcel_g, не могли бы вы сначала обновить до последней версии 0.7.12? Вы npm устанавливали axios? Вы вообще запускали npm install? Если вы сделали все выше, я могу опубликовать свой пример завтра.   -  person ewatch    schedule 13.02.2020
comment
Спасибо @ewatch - я запустил npm install в папке проекта, npm install gridsome и npm install -g gridsome, но из-за предупреждения о зависимости от начальной загрузки, я думаю, он никогда не обновлялся. Gridsome по-прежнему застрял на уровне 0,6,9. Поскольку я был новичком в npm, node.js и vue.js, мне потребовалось время, чтобы понять это. По сути, установите правильный jquery, а затем заставьте npm получить правильную версию gridsome. - ›'npm i [email protected] --save', за которым следует 'npm install npm-check-updates', за которым следует 'npm i [email protected] --save'   -  person marcel_g    schedule 13.02.2020


Ответы (1)


Решено:

Меня это немного сбило с толку, поэтому мне пришлось искать, как узнать, какая версия gridsome была установлена. Он не был установлен глобально, поэтому мне пришлось перейти в нужную папку, чтобы узнать, какая это была.

Оказалось, что это была 0.6.9, а последняя - 0.7.12, хотя я начал этот проект с npm install gridsome (я бы подумал, что npm install получит последнюю версию)

npm install npm-check-updates показало, что в начальной загрузке отсутствует зависимость, поэтому мне, видимо, сначала пришлось это исправить. Я пытался запустить npm install gridsome и npm update gridsome и различные другие перестановки, чтобы получить gridsome для обновления, но этого не произошло.

Решение было:

  • 'npm я [email protected] - сохранить'
  • 'npm audit fix' (не уверен, было ли это необходимо)
  • 'npm install npm-check-updates' (также не уверен, было ли это необходимо)
  • за которым следует 'npm i [email protected] --save'

По-видимому, опция --save также обновляет файл package.json в вашей локальной папке, что также могло быть необходимо.

person marcel_g    schedule 13.02.2020
comment
Замечательно, что мои вопросы направили вас в правильном направлении. Я думаю, что jquery не нужен для правильной работы gridsome. Вместо jQuery gridsome основан на vue.js, и нет необходимости использовать jQuery. - person ewatch; 14.02.2020
comment
Да, я не знаю, зачем это было нужно. Похоже, что для начального примера проекта, с которого я начал, требуется bootstrap и jquery, так что это могло быть камнем преткновения. Я не изучил его достаточно внимательно, чтобы понять, зачем они нужны, но возможно, у них есть какие-то js на стороне клиента или они нужны для извлечения данных из ленты Instagram? - person marcel_g; 19.02.2020