Jest не может найти модуль из объекта window в проекте Vue / Vuex

#vue.js #jestjs #vuex #jsdom

#vue.js #jestjs #vuex #jsdom

Вопрос:

У меня есть конфигурация, прикрепленная к window объекту в /public/js/settings.js файле:

 window.mySettings = {
  foo: 1,
  bar: 2,
}
  

Я импортирую эти настройки в файл хранилища vuex baz.storage.js в проекте vue:

 import settings from 'mySettings';
  

Все работает, за исключением того, что jest не понимает этот экспорт:

 Cannot find module 'mySettings' from 'baz.storage.js'
  

И поэтому весь набор jest завершается сбоем.

Комментарии:

1. у вас есть вызываемый модуль mySettings ? как вы включаете /public/js/settings.js его в свой скрипт?

2. index.html в public каталоге in: <script src="/js/settings.js"></script>

Ответ №1:

Если /js/settings.js включен в вашу страницу, вам не нужно импортировать его в baz.storage.js но сначала убедитесь, settings.js что это включено.

Например:

 <script src="/js/settings.js"></script>
<script src="/js/script2.js"></script>
<script src="/js/script3.js"></script>
  

settings.js добавляется сначала в приведенном выше примере, чтобы window.mySettings он был доступен для script2.js и script3.js


как только вы объявили переменную в window , она объявляется в глобальной области видимости, и к ней можно получить доступ из всех других скриптов.

Например:

 console.log(window.mySettings)
  

Комментарии:

1. В любом случае, если я сделаю это const settings = window.mySettings , набор тестов jest завершится неудачно, он не увидит settings переменную.

2. в каком файле вы назначаете window параметр a const ?

3. Такого файла нет