Как jsdom должен быть настроен с NuxtJS? - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь использовать jQuery на NuxtJS.После этого урока я, очевидно, получаю сообщения о том, что jQuery нужен контекст окна.Я установил jsdom и все его зависимости и использую его , как и должно быть , но каждый раз, когда я запускаю npm run dev, всегда появляется следующая ошибка:

 ERROR  Failed to compile with 5 errors                                                      friendly-errors 14:13:40

These dependencies were not found:                                                           friendly-errors 14:13:40
                                                                                             friendly-errors 14:13:40
* child_process in ./node_modules/jsdom/lib/jsdom/living/xmlhttprequest.js                   friendly-errors 14:13:40
* fs in ./node_modules/jsdom/lib/jsdom/browser/resources/resource-loader.js, ./node_modules/jsdom/lib/jsdom/living/xhr-utils.js and 2 others
                                                                                             friendly-errors 14:13:40
To install them, you can run: npm install --save child_process fs

Обратите внимание, что эти зависимостидействительно установлен и актуален.Это из-за конфликта сторон на Nuxt?Как бы это было решено полностью или иначе?

Я также настроил плагин, чтобы всегда иметь контекст окна по умолчанию через jsdom:

jsdom.js

var jsdom = require("jsdom")
const { JSDOM } = jsdom

const { document } = new JSDOM("").window
global.document = document

1 Ответ

0 голосов
/ 13 мая 2019

Чтобы использовать jsdom, вы должны изменить nuxt.configure.js.После изменения nuxt.configure.js перезапустите nuxt.

export default {
  // some configurations
  build: {
    /*
    ** You can extend webpack config here
    */
    extend (config, { isDev, isClient }) {
      if (isClient) {
        config.node = {
          fs: 'empty',
          child_process: 'empty',
        }
      }
    }
  },
  // other configurations
}

Если вы столкнулись с той же ошибкой зависимости, просто добавьте те же настройки в config.node, как показано ниже.

          fs: 'empty',
          child_process: 'empty',
          tls: 'empty',
          net: 'empty',

Вв этом случае, я полагаю, вам не нужно использовать fs, child_process в вашем коде, но они мешают вам импортировать jsdom.С конфигурацией, упомянутой выше, вы можете заменить fs и child_proccess пустым объектом и подавить ошибку сборки.Поэтому, если вы попытаетесь использовать функцию, которая зависит от этих библиотек, например, выборку со схемой файлов, она не будет выполнена.

Подробная информация о config.node приведена здесь: https://webpack.js.org/configuration/node/#other-node-core-libraries

...