【问题标题】:live reload not working after upgrading yo grunt-cli bower升级 yo grunt-cli bower 后实时重新加载不起作用
【发布时间】:2013-07-17 04:12:48
【问题描述】:

我刚刚构建了 Nodejs 并安装了 0.10.6 然后卸载了 yo+grunt-cli+bower+generator-webapp 并使用 npm -g 重新安装到最新版本,
哟 webapp
但是现在实时重新加载不起作用,在 chrome devtools 中也看不到任何错误

哟-v:1.0beta5
grunt-cli v0.1.8 和 grunt v0.4.1
凉亭-v:0.9.2
节点-v:0.10.6
npm -v: 1.2.18

grunt 服务器显示 watch 任务:时间 + 文件名已更改

尝试过:将 Gruntfile 中的端口号更改为.. LIVERELOAD_PORT = 34729;诺戈 :(
我较旧的 webapp 项目仍然可以正常工作
丢了..

谢谢
--------------------- 更新
1. 将 lrSnippet 移至 Grunfile.js 中的第 1 位
2. 在 index.js 中移动

    end.call(res, res.data, encoding);

在 if 块之外

现在它可以部分工作了:
总结:
1. 更改 index.html > 重新加载 ok
2. 更改 main.scss > 重新加载 ok
3. 更改 my.sass > 不行

第三步之后
1. 修改 index.html > 不行
2. 对 main.scss 的更改 > 不行

4. 对 hello.coffe 的更改 > 不行
第 4 步之后
1. 修改 index.html > ok
2. 修改 main.scss > ok

//---------------------------------------- index.html
对 index.html 的更改
重新加载确定
grunt 服务器窗口记录更改并发出重新加载命令

grunt 服务器窗口抓取 =

    Running "watch" task
    Waiting...OK
    >> File "app/index.html" changed.

    Running "watch" task
    ... Reload app/index.html ...
    Completed in 0.002s at Sat May 18 2013 12:47:58 GMT+0530 (IST) - Waiting...

//---------------------------------------- main.scss
对 main.scss 的更改
重新加载确定
grunt 服务器窗口抓取 =

    >> File "app/styles/main.scss" changed.

    Running "compass:server" (compass) task
    overwrite .tmp/styles/main.css 
    unchanged app/styles/my.sass

    Running "watch" task
    Completed in 1.906s at Sat May 18 2013 12:48:24 GMT+0530 (IST) - Waiting...
    OK
    >> File ".tmp/styles/main.css" changed.

    Running "watch" task
    ... Reload .tmp/styles/main.css ...
    Completed in 0.002s at Sat May 18 2013 12:48:24 GMT+0530 (IST) - Waiting...

//---------------------------------------- my.sass
更改 my.sass
重新加载不正常(不重新加载)
grunt 服务器窗口抓取 =

    Running "watch" task
    Waiting...OK
    >> File "app/styles/my.sass" changed.

    Running "compass:server" (compass) task
    unchanged app/styles/main.scss
    unchanged .tmp/images/generated/design-s65ab268e46.png
    overwrite .tmp/styles/my.css 

    Running "watch" task
    Completed in 0.602s at Sat May 18 2013 13:00:19 GMT+0530 (IST) - Waiting...

//----------------------------------------
my.sass 更改后
对 index.html 或 main.scss r 所做的更改未显示在 grunt 服务器窗口中

Watch 命令不记录任何内容。
更改 r 未重新加载
//--------------------------------------
重新启动的 Grunt 服务器
//---------------------------------------------------- hello.coffee

grunt 服务器窗口抓取 =

    OK
    >> File "app/scripts/hello.coffee" changed.

    Running "coffee:dist" (coffee) task
    File .tmp/scripts/hello.js created.

    Running "watch" task
    Completed in 0.011s at Sat May 18 2013 13:34:56 GMT+0530 (IST) - Waiting...

//----------------------------------------

【问题讨论】:

  • 再次尝试了你的 webapp .. nogo .. 部分工作.. 详情见上文 ├── connect-livereload@0.1.4 ├─┬ grunt-contrib-connect@0.2.0 │ └─ ┬ connect@2.7.9 ├─┬ grunt-contrib-compass@0.2.0 ├─┬ grunt-contrib-watch@0.4.3

标签: yeoman gruntjs bower


【解决方案1】:

当前 livereload/yo 设置存在错误。以下是解决问题依赖项(connect-livereload)的详细信息。

https://github.com/yeoman/generator-webapp/issues/63

【讨论】:

  • 尝试了你的建议,现在它可以部分工作了。.coffee 和 .sass r 的更改未重新加载,此外,在更改 .sass 后,未加载对 .html 或 .scss r 的更改
  • @ritin 很有趣。我知道 generator-webapp 中存在 sass 和 coffeescript 工作流问题。我将在大约 8 到 9 小时内验证这一点。
【解决方案2】:

您可以确保进一步诊断问题的三件事。

  1. 确保您使用的是最新版本 npm update -g yo
  2. 您不应该明确使用 LiveReload 插件,它在运行时与 Yeoman watch 命令冲突
  3. 您的端口(在 gruntfile.js 中)可能正在被其他进程使用,请尝试从终端退出,更改端口,看看它是否有效。

问题是 yeoman 在当前版本中不会自动更改端口,如果您在当前终端会话中强行关闭它,它就会停止工作。

这里已经讨论过同样的问题 - https://github.com/yeoman/yeoman/issues/938

如果您仍然看到问题,请尝试运行以下命令并将输出粘贴到此处。

yo --version && echo $PATH $NODE_PATH && node -e 'console.log(process.platform, process.versions)' && cat Gruntfile.js

【讨论】:

    【解决方案3】:

    已提交以解决此问题。

    https://github.com/yeoman/generator-webapp/pull/67

    我猜我们很快就会看到更新。

    与此同时,您可以做的是修改您的 Gruntfile.js。在第 61 行附近寻找 livereload 的连接选项并替换此 sn-p 的配置。

    livereload: {
      options: {
        middleware: function (connect) {
          return [
           lrSnippet,
           mountFolder(connect, '.tmp'),
           mountFolder(connect, yeomanConfig.app)
          ];
        }
      }
    },
    

    另外,将模块 connect-livereload 更新到 0.1.4 也是一个好主意。

    只需在您的项目目录上运行npm install connect-livereload

    【讨论】:

      【解决方案4】:

      我在 Gruntfile.js 中添加了实时重新加载作为监视选项:

          watch: {
              options: {
                  nospawn: true,
                  livereload: true
              },
      

      设置 livereload:port 而不是 livereload:options:port 对我有用:

      livereload: {
        port: 35728
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-14
        • 1970-01-01
        • 2014-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多