所以 - 我想在ember应用程序中使用typeahead。
我得到一个cli app并运行然后我运行
bower install typeahead.js
我可以看到代码已被放入bower_components中。
然后我将以下内容添加到brocfile:
/* global require, module */
var EmberApp = require('ember-cli/lib/broccoli/ember-app');
var app = new EmberApp();
// Use `app.import` to add additional libraries to the generated
// output files.
//
// If you need to use different assets in different
// environments, specify an object as the first parameter. That
// object's keys should be the environment name and the values
// should be the asset to use in that environment.
//
// If the library that you are including contains AMD or ES6
// modules that you would like to import into your application
// please specify an object with the list of modules as keys
// along with the exports of each module as its value.
app.import('bower_components/typeahead.js/dist/typeahead.bundle.min.js');
module.exports = app.toTree();
然而它不起作用 - 我得到了
Uncaught ReferenceError: Bloodhound is not defined
从阅读文档 - 用bower安装并在brocfile中添加行应该足以满足它?我读错了还是这个错误?
我创建了一个公开的GIT回购,显示了这个问题:
https://github.com/wayne-o/ember-cli-bootstrap
我所做的就是:
ember new bootstrap-test
bower install bootstrap
然后补充说:
app.import('bower_components/bootstrap/dist/css/bootstrap.css');
app.import('bower_components/bootstrap/dist/js/bootstrap.js');
到brockfile ...
它没有用......
答案 0 :(得分:5)
您没有共享您的Brocfile.js,但是当我在该文件末尾的module.exports = app.toTree();
行之后添加了依赖项时,我遇到了类似的问题。文档是not terribly clear关于此,但module.exports = app.toTree();
应始终在Brocfile.js中排在最后。尝试将app.import()
语句移到此行之上,事情应该正常。
<强>更新强>
拉下你的回购我发现了一些问题。首先,您需要将--save-dev
传递给您的bower安装程序以获取bootstrap和typeahead.js,以便在其他人下载您的repo时安装这些安装程序。这将为你的bower.json添加这样的部分:
"devDependencies": {
"bootstrap": "~3.2.0",
"typeahead.js": "~0.10.5"
}
我还将"Bloodhound": true
添加到.jshintrc的prefdef
部分,以避免构建时出现jshint错误:
"predef": {
"document": true,
"window": true,
"-Promise": true,
"Bloodhound": true
},
您还可以将$
中的index.js
引用替换为Ember.$
,以避免出现其他jshint错误。
一旦我这样做了,我就可以运行ember serve
并让应用程序加载而没有任何Bloodhound问题。