为什么我无法通过网络共享连接到连接服务的网站?

时间:2013-05-09 18:35:06

标签: node.js connect gruntjs

我正在使用grunt,connect和livereload在开发过程中提供测试页面(它是一个单独的平面HTML页面),我想在手机上测试该网站。通常情况下,我使用网络共享 - 使用我的Mac的本地网址(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']);
};

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

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

$ lsof -i