2014-07-11 21 views
10

Một số nền ngắn gọn: Tôi đang sử dụng browserify và browserify-shim (và gulp để xây dựng) để tạo một ứng dụng web. Trước khi vấn đề này, tôi đã được require ing jquery từ npm vì vậy tôi đã không có vấn đề. Khi tôi bắt đầu thực hiện một số tối ưu hóa, tôi đã nhận ra khối lượng lớn của gói với jQuery bao gồm. Vì vậy, bây giờ tôi lấy jQuery từ một CDN với thẻ script và đặt nó trước tệp bundle.js. Nhưng tôi có vấn đề tuyên bố jQuery như là một plugin toàn cầu và đúng cách của tôi jQuery plugin trong trình duyệt và trình duyệt-shim. Khi tôi chạy ngụm để xây dựng, tôi vẫn gặp lỗi tương tự:Sử dụng Browserify với jQuery Plugins

[gulp] gulp-notify: [Compile Error] module "jquery" not found from "/Volumes/Chetan/Users/cshenoy/Projects/urbanstems-node/app/plugins/jquery.inview.js"

Nó có vẻ như browserify-shim không nhặt về jQuery là một toàn cầu.

Để tham khảo, tôi đang sử dụng inview plugin.

Dưới đây là package.json của tôi với các bộ phận có liên quan

"browser": { 
    "inview": "./app/plugins/jquery.inview.js" 
}, 
"browserify-shim": { 
    "jquery": "global:jQuery", 
    "inview": { 
    "depends": [ 
     "jquery" 
    ] 
    } 
} 

Hãy cho tôi biết những gì khác tôi có thể bao gồm để giúp chẩn đoán lỗi.

+4

Tôi tò mò về việc đi theo hướng ngược lại. Khi bạn 'yêu cầu ('jquery')' từ npm, làm cách nào bạn có thể hiển thị nó trên toàn cầu để các plugin vẫn hoạt động? –

+0

Tôi đã không phơi bày nó trên toàn cầu khi tôi cài đặt nó từ npm. Giá trị cho jquery bên trong browserify-shim sẽ là $ hoặc jQuery. Sau đó, tất cả các plugin phụ thuộc vào jQuery của bạn sẽ được liệt kê bên dưới nó với trường phụ thuộc danh sách jquery. –

Trả lời

6

Hóa ra bạn không cần khai báo mọi plugin jQuery dưới browserify-shim nếu nó chỉ phụ thuộc vào jQuery. Tôi vừa xóa mục nhập và mọi thứ hoạt động tốt.

Các vấn đề liên quan