Плагин JQuery (datatables) с Webpack и Typescript

Я пытаюсь использовать плагин datatables JQuery с webpack и typescript. У меня уже есть JQuery и работает вместе с typings (intelliSense работает), для datatables у меня есть только intelliSense, но после сборки webpack при запуске приложения код терпит неудачу, когда дело доходит до $('#id').строка dataTable ().

app.js:43Uncaught TypeError: $(...).dataTable is not a function

Я не могу понять, как правильно подключить этот плагин, может ли кто-нибудь мне помочь?

в webpack.конфиг.JS-это как следует; https://gist.github.com/marcingolenia/2fa78ed2cd42f9294da5edd22d351245

Я надеюсь, что эта строка решит проблему;

{ test: require.resolve("dataTables.net"), loader: "imports?define=>false,$=jquery"},

Как говорит doc загрузчика импорта;

есть много модулей, которые проверяют функцию define перед использованием На CommonJS. С webpack, может быть, они по умолчанию для AMD в этот случай, который может быть проблемой, если реализация является причудливой.

datatables обеспечивает оба, поэтому я хотел отключить AMD, используя define=>false, как упоминалось здесь https://www.datatables.net/forums/discussion/32542/datatables-and-webpack

теперь я застрял :(

2 ответов


вы почти там!

убедитесь, что оба datatables.net и datatables.net-dt установлен через NPM:

npm install datatables.net datatables.net-dt --save-dev

в вашем файле записи ./src/main.js пишем:

require( 'datatables.net' )( window, $ )
require( 'datatables.net-dtt' )( window, $ )

после этого любая логика кода следующего формата $(...).dataTable будет работать в качестве примеров, показанных на главной странице DataTables.


отключение AMD, похоже, является ответом. Многие из решений, которые я нашел, не работали на меня.

самый простой способ отключить AMD-добавить следующее правило в конфигурацию webpack (webpack 2+)

module: {
    rules: [
        { parser: { amd: false } }
    ]
}