Jquery_1.default не является функцией webpack

Я хочу использовать jquery для внешнего импорта веб-пакета, но когда я использую import $ from 'jquery', браузер выдает ошибку jquery_1.default is not a function, и после того, как я изменил синтаксис импорта на import * as $ from 'jquery' и const $ = require('jquery'), он все тот же. Я использовал машинописный текст, веб-пакет и vue. Кто знает, что мне делать? Заранее спасибо.

tsconfig.js
Jquery_1.default не является функцией webpack

webpack.config.js
Jquery_1.default не является функцией webpack

Информация об ошибке
Jquery_1.default не является функцией webpack

globals.d.ts
Jquery_1.default не является функцией webpack

Объявив jquery как внешний в конфигурации webpack, вы говорите, что загрузите его в целевую среду другим способом. Как вы его загружаете? <script src=...>?

Matt McCutchen 20.09.2018 05:43

Как и этот import jquery from 'jquery', он не загружается? В моих node_modules есть jquery.

gourdbaby 20.09.2018 08:05

Если вы хотите, чтобы веб-пакет включал jquery из ваших node_modules в основной пакет (который, как я предполагаю, вы каким-то образом загружаете), вам не следует объявлять jquery как внешний.

Matt McCutchen 22.09.2018 15:22

Спасибо за вашу помощь. На самом деле я не объявляю jquery в файлах .d.ts, все равно ошибаюсь

gourdbaby 25.09.2018 07:00

Извините, я не понимаю ваш комментарий. Вы пробовали удалить jquery из раздела externals конфигурации webpack? Что тогда происходит?

Matt McCutchen 28.09.2018 02:10

да, я удалил jquery из externals и использовал импорт scriptjquery. Теперь ошибки нет. Большое спасибо. Мой английский очень низкий.

gourdbaby 30.09.2018 11:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
1 116
1

Ответы 1

Возможно, есть подход лучше, чем тот, который описан в вашем вопросе. Если вы устанавливаете jquery и @ types / jquery через npm, а затем импортируете их в контроллеры только там, где они используются, вам не потребуется конфигурация или объявление jquery ни в webpack.config.js, ни в globals.d.ts.

  1. Удалите внешнюю конфигурацию jquery из webpack.config.js
  2. Удалите все экземпляры var jquery = require("jquery"); и declare var jQuery: any; из кода
  3. Запускаем npm install jquery --save
  4. Запускаем npm install @types/jquery --save-dev
  5. Добавьте import * as $ from 'jquery'; к любым контроллерам, где это необходимо

Затем вы можете сделать:

if (!$.trim(this.inputName)) { 
    console.info('inputName was empty or whitespace only');
} else {
    console.info('inputName contained alphanumeric text');
}

Для ссылки на библиотеку всегда используйте $ вместо jquery в дальнейшем.

Другие вопросы по теме