ember-cli用bower添加依赖项

时间:2014-09-21 16:23:18

标签: ember.js bower ember-cli

所以 - 我想在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 ...

它没有用......

1 个答案:

答案 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问题。