Если импортируемый вами файл jquery.js
не содержит export
, вы не можете использовать import
для его импорта. (Вы можете использовать import
для его загрузки, хотя это может быть не очень хорошей идеей, подробнее ниже.) Встроенный браузер поддерживает только импорт из файлов, написанных как модули.
import * as $ from '../node_modules/jquery/dist/jquery.js';
console.log($());
дает мне в консоли
TypeError: $ is not a function
Причина в том, что когда вы используете * as $
в своем import
, вы импортируете объект пространства имён модуля для модуля. Объект пространства имен модуля никогда не вызывается, это объект со свойствами для экспорта модуля. Вы можете использовать синтаксис * as x
для импорта любого скрипта, даже того, который не написан как модуль и поэтому нигде не имеет export
, но все, что вы получаете, это пустой объект, потому что скрипт не написан какМодуль не имеет экспорта.
, но если я пишу в консоли после появления этого сообщения:
console.log($());
, он работает как положено
Это потому, что jQuery создает глобальный $
, используя глобальный window
. Единственная причина, по которой вы не можете использовать этот глобальный $
в своем модуле, заключается в том, что вы затеняли , используя $
в качестве идентификатора объекта пространства имен модуля.
Thisвероятно будет работать:
import '../node_modules/jquery/dist/jquery.js';
... потому что это загрузит и запустит скрипт jQuery, который создает глобальный. Поскольку это не объявляет локальный идентификатор модуля с именем $
, если вы используете $
в своем модуле, он использует global $
, который создает jQuery.
Но я опасаюсь использовать import
для загрузки скриптов, которые не предназначены для использования в качестве модулей. Вместо этого я думаю, что я просто включил бы jQuery с использованием тега script
, а затем раздвинул бы ваш модуль отдельно, используя глобальный $
.
<script src="node_modules/jquery/dist/jquery.js"></script>
<script src="js/test.js" type="module"></script>
(или нашел бы версию jQuery в модульном виде;Я не знаю ни одного, но, вероятно, существует.)