【问题标题】:Yeoman 'grunt test' fails on clean project with 'port already in use'Yeoman 'grunt test' 在干净的项目中失败,'端口已在使用'
【发布时间】:2013-07-01 02:33:23
【问题描述】:

与:

  • Mac OS 10.8.4
  • 节点 0.10.12
  • npm 1.3.1
  • grunt-cli 0.1.9
  • 哟1.0.0-rc.1
  • 凉亭0.9.2
  • generator-angular@0.3.0

我在干净的yo angular 项目中遇到以下错误,然后是grunt server,然后是grunt test

Running "connect:test" (connect) task  
Fatal error: Port 9000 is already in use by another process.

我是 Yeoman 的新手,很困惑。我已经删除了我的原始项目并在一个新文件夹中创建了一个新项目,以确保我没有忽略任何不可见的配置。我重新启动了机器以确保我没有运行任何我忘记的临时服务器进程。经过所有尝试,基本服务器正常启动,连接到 Chrome,并且观察者会根据任何更改更新浏览器。 (值得注意的是,服务器在 9000 上运行,这对于测试运行程序也尝试使用 9000 来说似乎很奇怪。)但是我在尝试启动测试运行程序时遇到了同样的错误。

这是我可以解决的问题,还是我应该向 Yeoman 团队报告的问题?谢谢。

【问题讨论】:

  • 您是否尝试过更改 Gruntfile.js 中测试任务的端口?正如您提到的,livereload 和 test 默认使用相同的端口,所以这可能是问题所在。
  • 这很奇怪:他们似乎都在使用相同的数据。如果我将 connect.options.port 更改为 9001,那么 livereload 和 test 都尝试使用 9001,而我得到的只是错误中的不同端口号。我很困惑为什么会这样写,为什么不会有两个具有不同端口号的独立配置。
  • 我猜默认配置不会假设您同时运行服务器和测试。也许它应该在文件更改时自动运行测试,或者在构建之前运行它们。

标签: angularjs gruntjs yeoman


【解决方案1】:

添加port: 9001 进行测试,如下所示:

test: {
  options: {
    port: 9001,
    ...
  }
}

【讨论】:

  • 是的,请参阅上面的答案,我提到将 connect.test.options.port 设置为 9001。
  • 我试过这个,但也没有运气,使用聚合物发生器
【解决方案2】:

我创建了一个新的配置属性:connect.test.options.port,并将其设置为 9001。现在它们似乎在不同的端口上正常运行。

另请注意,Gruntfile.js 覆盖了karma.conf.js 中的singleRun 属性。如果您希望 karma.conf.js 中的配置正常工作,请将其注释/删除。

编辑 2013 年 11 月 4 日: The issue 也被其他人报告,似乎已通过更改生成器角度得到解决。

【讨论】:

    【解决方案3】:

    我更改端口后,出现 XHR 错误, The 'Access-Control-Allow-Origin' header has a value 'http://localhost:9000' that is not equal to the supplied origin. Origin 'http://localhost:9090' is therefore not allowed access. 最初是 9000,然后我改变了咕噜声

    connect: {
      main: {
        options: {
          port: 9090
        }
      }
    }
    

    【讨论】:

    • 知道这是服务器问题,而不是客户端问题。
    猜你喜欢
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 2017-01-11
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    相关资源
    最近更新 更多