Tôi đã tải select2
như mô-đun nút bởi:Cách sử dụng select2 với webpack?
npm install select2
và đưa nó vào app.js
tôi:
require('select2')($);
Khi tôi chạy
webpack
không có lỗi, nhưng khi tôi mở ứng dụng Tôi nhận được:
Uncaught TypeError: Object.defineProperty called on non-object(…)
đến từ select2.js
:
S2.define('select2/core',[
'jquery',
'./options',
'./utils',
'./keys'
], function ($, Options, Utils, KEYS) {
(...)
}
Liệu nó xảy ra bởi vì mô-đun wrapper cho select2
chỉ làm việc với AMD và không tương thích với CommonJS?
Tất nhiên tôi đã có jquery, tôi nghĩ rằng nó là quá rõ ràng để đề cập đến điều đó. Vấn đề là một số plugin jquery được bao bọc trong UMD, một số kiểm tra kỳ quặc nếu tôi sử dụng AMD, CommonJS hoặc không, và kiểm tra này ngắt trong Webpack, vì Webpack hỗ trợ cả hai, vì vậy UMD wrapper giả sử tôi sử dụng AMD mặc dù tôi sử dụng commonJS. Có một hacky [workaround] (http://stackoverflow.com/questions/28969861/managing-jquery-plugin-dependency-in-webpack) cho điều này trong câu trả lời được chấp nhận ở # 4. –