2016-03-08 74 views
-2

我想在我使用webpack开发的Angular 2应用程序中使用bootstrap的carousel组件。我有真正的问题需要bootsrap.js和jQuery.js。webpack&jQuery:不能很好地玩在一起

在这个问题上有很多很多帖子在stackoverflow和世界各地的其他地方interweb。 This post,例如,看起来真的很有前途,但我把它遵循的信,仍然可以得到在浏览器中的错误:

Uncaught Error: Bootstrap's JavaScript requires jQuery 

在我的组件定义文件,我有两个相当臭,并怀疑在寻找需要:

require("../../../../node_modules/jquery/dist/jquery.js"); 
require('../../../../node_modules/bootstrap-sass/assets/javascripts/bootstrap.min.js'); 

我试过非缩小版的bootstrap,.js,以及require的几个变体,比如require('jquery'),但是错误依然存在。

请帮忙!我已经在另一个项目上工作,并不明白为什么jQuery不玩。


有一两件事我想这样做是简单地直接在组件需要jQuery库,就像这样:

window.jquery = window.$ = require('jquery'); 

打字稿编译器抱怨,可以预见。创建包含$jquery成员的窗口界面不起作用。编者抱怨。

我会很高兴现在这个解决方案,直到我能找到一个不太臭的解决方案。

想法或解决方案非常赞赏和奖励与虚拟甜甜圈。


嗯。继basarat的建议,我试过如下:

import $ = require('jquery'); 
import bootstrap = require('bootstrap-sass'); 

这产生的VSC和的WebPack错误:cannot find module jquerycannot find module bootstrap-sass。奇怪的是,删除作业,像这样:

require('jquery'); 
require('bootstrap-sass'); 

...和模块神奇地发现。有关嘶嘶声的不同错误,但至少它发现了模块。

想法?

+0

'和模块神奇地发现。在'compile'时间和'runtime'找到的模块是不同的东西。要在编译时找到你需要的TypeScript定义(例如'typings install --ambient jquery')。你将需要自己编写'bootstrap-sass'定义 – basarat

+0

这并不能解决问题,它在编译时发生。甚至在编译之前:VS Code强调它。但奇怪的是,只有当你预先输入$ ='时才会发生这种情况。 – serlingpa

回答

0

我有两个相当臭和怀疑寻找需要

它应该是:

import $ = require('jquery'); // 1 
import bootstrap = require('bootstrap'); // 2 

还有什么是错的。我可以向你保证,1只是工作。问题在于bootstrap及其npm包。如果您按照此顺序进行这些导入,那么也应该可以正常工作。编译--module commonjs

+0

嗯,我正在使用bootstrap-sass,但我会修改并放弃它。谢谢。 – serlingpa

+0

我尝试实施您的建议并收到更多错误。请看我原来的帖子,我在那里添加了细节。 – serlingpa

相关问题