解决Gulp构建的AngularJS项目中的footable依赖不能自动注入的问题

项目是基于Angular 1.5,构建工具为Gulp。项目文件结构来源于某前端模板的种子项目,与多数AngularJS 的Gulp版本的种子项目大同小异。Gulp的inject任务中已经有了将项目所依赖包的js、css文件自动添加到index.html中的脚本。

现在某页面需要用到footable,于是添加footable依赖:
bower install –save footable

安装后检查,看起来插件已经存在于项目的bower_components目录下了,并且项目的bower.json文件中,也已经自动添加了对footable的依赖,当前版本是3.1.4。

但是运行gulp serve 或者gulp build,均未能在index.html中看到footable的踪影。

小小了解了一下才知道原因:gulp的依赖注入,是调用了wiredep(项目地址:https://github.com/taptapship/wiredep)
而wiredep的工作原理,是根据项目的bower.json文件中所列的依赖,一一处理这些依赖项,处理的时候,会分析该依赖包本身的bower.json文件,根据该文件中的”main”的值来决定要将哪个文件添加到index.html中去。而footable的bower.json文件中,缺失了这一项。

根据wiredep的官方文档,只要在自己项目的bower.json文件中override就可以了。代码如下:

"overrides": {
  "footable": {
    "main": [
      "compiled/footable.js",
      "compiled/footable.bootstrap.css"
    ]
  }
}

初次使用 JHipster

安装不难,Yarn,Yeoman 等都装上,按官方文档都装好。

然后运行 yo jhipster 来根据向导生成程序。用的是git shell,不知为什么,互动的过程键盘方向键输入异常,而且界面上字符显示还出现了叠加,所以一路回车,大致按照默认值生成了程序。

(此处特别友情提醒,后来经测试查明,jHipster的生成向导在Git Shell下运作不正常,无法进行菜单选择,在Windows Power Shell下显示正常,其它类型的终端暂未测试)

然后,运行yarn start启动前端,界面能正常显示。运行mnvw启动服务器端的时候出现了问题:

1,一开始是解压缩maven压缩文件的报错,网上搜了一下,说把对应的user/.m2/下面的相关文件夹删除,果然好了;

2,然后看报错信息,mysql连不上,应该是向导生成的默认配置跟实际服务器不一致,这个需要修改一下配置,修改src\main\resources\config\application-dev.yml里面的对应节点即可;

3,报zookeeper连不上,下载zookeeper了之后,在本机安装,按照官方文档,新建了zoo.cfg文件,然后运行bin\zkServer.cmd start启动,结果报错:

2017-04-30 20:48:44,016 [myid:] - WARN  [main:QuorumPeerMain@113] - Either no config or no quorum defined in config, running  in standalone mode
2017-04-30 20:48:44,135 [myid:] - ERROR [main:ZooKeeperServerMain@55] - Invalid arguments, exiting abnormally
java.lang.NumberFormatException: For input string: "C:\zookeeper-3.4.10\bin\..\conf\zoo.cfg"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
        at java.lang.Integer.parseInt(Integer.java:580)
        at java.lang.Integer.parseInt(Integer.java:615)
        at org.apache.zookeeper.server.ServerConfig.parse(ServerConfig.java:59)
        at org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:84)
        at org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:53)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:116)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:78)

花了半小时才搞清楚,原来Windows下,用zkServer.cmd启动服务,不需要加start参数就可以了。。。

然后。。。zookeeper是运行起来了,但是启动jhipster服务器还是报错,如下:

org.springframework.context.ApplicationContextException: Failed to start bean 'outputBindingLifecycle'; nested exception is org.I0Itec.zkclient.exception.ZkNoNodeException: org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /brokers/ids

夜深了,留下问题暂未解决。

第二天重新创建了程序,在生成向导中先没有选择服务注册和发现,这样避开使用zookeeper的问题。先把jhipster跑起来,以后再慢慢解决连接zookeeper报错的问题。