【发布时间】:2015-09-02 23:21:03
【问题描述】:
虽然我坚持使用通用结构让我的生活更轻松,但我开始将 chrome 浏览器扩展转换为 yeoman 模板格式 (https://github.com/yeoman/generator-chrome-extension)。
不幸的是,当我尝试添加我需要的第一个基本凉亭源时,它根本不起作用:
https://github.com/Yaffle/EventSource
这是我所做的:
- 使用 yeoman 助手设置新扩展
- $ bower install EventSource --save
-
像这样将事件源添加到清单中
“背景”:{ “脚本”:[ “脚本/chromereload.js”, "app/bower_components/EventSource/eventsource.js", ...
添加“new EventSource('http://localhost:9292/updates');”到 background.js
除此之外,该项目未受影响。
每当我用 grunt 启动项目时,它都找不到 EventSource 像这样“'EventSource' 没有定义。”
将 eventsource.js 直接添加到我的脚本文件夹并从那里请求它会失败,因为 linting eventsource.js 文件(工作得非常好)并因太多警告而中止它(例如使用单引号)。
以前,整个项目在没有 grunt/bower 的情况下运行良好,现在在我添加第一行真正的代码后它甚至无法启动。对于本应让您的生活变得如此轻松的工具来说,这真是令人失望。
是否因为 eventsource.js 中的警告而失败?在第一种情况下(通过凉亭),它没有说明这一点,所以我不确定。 我可以继续尝试不同的组合,但我显然在这里缺少一个核心概念或类似的东西。
有什么想法吗?
更新:
经过更多尝试和放弃后,我发现了神奇的“grunt bowerInstall”命令,可以自动在模板中添加脚本标签 - 仍然没有帮助。
我也确实在一个仅使用 jQuery 的新项目上再次尝试(假设这必须工作..),但它仍然没有。 在 popup.js(html 模板包含 jQuery)和后台脚本(清单包含它)中都没有。
我可能阅读了所有关于热使用这些组件的手册/操作指南,但仍然一无所获。
改天再试:
从一个干净的头脑开始,我今天仔细研究了一下,发现显然你必须像这样在 jshint 中将 $ 之类的全局变量“列入白名单”: http://jshint.com/docs/options/#jquery
仍然不确定这是否真的是最好的方法,因为它似乎非常违反直觉,承诺易于上手 yeoman/grunt/bower 框架。
【问题讨论】:
-
几个小时后,我仍然没有接近解决方案,但失去了任何希望这件事可以工作......请参阅上面的更新。
-
不是真正的解决方案,但发现了无法编译的问题:当我从 grunt debug 中删除“jshint”任务时,它起作用了......
-
我确实添加了另一个可能的步骤来接近解决方案,但仍然不确定这是否是“应该如何完成”。
-
你想使用来自
chromereload.js的那个吗? -
是的 chromereload 是项目的一部分(随模板一起提供)。
标签: google-chrome-extension gruntjs yeoman bower