1

我在开发过程中使用 grunt、connect 和 livereload 来提供一个测试页面(它是一个单一的 HTML 页面),并且我想在我的手机上测试该站点。通常,我使用网络共享来执行此操作——通过使用我的 Mac 的本地 URL ( my-imac.local) 导航到该站点。

当我使用 Python 的 SimpleHTTPServer 为页面提供服务时,效果很好。当我使用 grunt/connect 时,它在那里无法访问(尽管它仍然可以在 localhost 访问)。如何配置连接以响应这些请求?

我的 gruntfile,供参考:

var path = require('path');
var lrSnippet = require('grunt-contrib-livereload/lib/utils').livereloadSnippet;

var folderMount = function folderMount(connect, point) {
  return connect.static(path.resolve(point));
};

module.exports = function(grunt) {
  function registerRobustTasks(name, tasks) {
    grunt.registerTask(name, function() {
      // so we don't have stupid issues with grunt crashing
      // every time a test fails...
      grunt.option('force', true);
      grunt.task.run(tasks);
    });
  }

  grunt.initConfig({
    pkg : grunt.file.readJSON('package.json'),
    livereload : {
      port : 48341
    },
    connect : {
      livereload : {
        options : {
          port : 48342,
          middleware : function(connect, options) {
            return [lrSnippet, folderMount(connect, '.')];
          }
        }
      }
    },
    regarde : {
      html : {
        files : ['*.html'],
        tasks : ['livereload']
      }
    }
  });

  grunt.loadNpmTasks('grunt-regarde');
  grunt.loadNpmTasks('grunt-contrib-livereload');
  grunt.loadNpmTasks('grunt-contrib-connect');

  registerRobustTasks('default', ['livereload-start', 'connect', 'regarde']);
};
4

2 回答 2

1

事实证明这很简单:我需要hostname : '*'连接服务器上的一个选项。

于 2013-05-09T18:58:06.820 回答
0

最简单的方法是与您的计算机和您的移动设备在同一个 LAN 上,然后在您的手机上进行测试,使用计算机的 IP 地址和您选择让服务器侦听的端口。例如http://ipaddress:port.

要验证 grunt 是否正在运行服务器,您可以在lsofshell 中使用该程序。

$ lsof -i :port将在您的计算机上返回绑定到指定端口的程序。

同样,如果您删除端口号,您可以看到打开的文件列表(unix 将所有内容都视为文件),有时您也可以找到一些有趣的东西。

$ lsof -i

于 2013-05-09T18:57:50.820 回答