【问题标题】:Visual Studio 2015 Remote iOS Build Server Setup - secure mode issueVisual Studio 2015 远程 iOS 构建服务器设置 - 安全模式问题
【发布时间】:2015-08-14 00:12:00
【问题描述】:

我正在构建一个混合移动应用程序 (Cordova),并尝试在 iOS 上运行我的构建。

我已按照documentation 中的步骤设置连接的 Mac,当我尝试在 Visual Studio 中构建代码时,我可以看到 Mac 终端响应。

我的问题是,当我使用remotebuild --secure false 启用远程构建服务器时,我在 Visual Studio 输出中收到以下错误(请注意,终端正在响应来自 Visual Studio 的构建请求,但随后因错误而失败):

无法建立到http://192.168.1.10:3000/cordova 的非安全连接。验证构建服务器未在安全模式下运行。

这是带有和输出的 Mac 终端活动:

    Last login: Tue Aug 18 19:31:21 on ttys001
IBRAHIM-ALHUSSAINs-Mac-mini:~ IBRAHIMALHUSSAIN$ remotebuild --secure false
remotebuild
Copyright (C) 2014 Microsoft Corporation. All rights reserved.
1.0.1

Warning: No server modules selected. Defaulting to configuration "modules": {"taco-remote": { "mountPath": "cordova"} }
Build Retention initialized with baseBuildDir /Users/IBRAHIMALHUSSAIN/.taco_home/remote-builds/taco-remote/builds, maxBuildsToKeep 20
Initialized BuildManager with baseBuildDir /Users/IBRAHIMALHUSSAIN/.taco_home/remote-builds/taco-remote/builds; maxBuildsInQueue 10; deleteBuildsOnShutdown true; allowsEmulate true; nextBuildNumber 423
Remote build server listening on [http] port 3000
express deprecated req.host: Use req.hostname instead ../../usr/local/lib/node_modules/remotebuild/lib/server.js:257:81
GET /modules/taco-remote 200 14.494 ms - 7
New build request submitted:
/build/tasks?command=build&vcordova=4.3.0&cfg=debug&loglevel=warn
{ 'accept-language': 'en-US',
  host: '192.168.1.10:3000',
  connection: 'close',
  'transfer-encoding': 'chunked' }
POST /cordova/build/tasks?command=build&vcordova=4.3.0&cfg=debug&loglevel=warn - - ms - -
npm ERR! Darwin 14.3.0
npm ERR! argv "node" "/usr/local/bin/npm" "install" "taco-remote-multiplexer"
npm ERR! node v0.12.4
npm ERR! npm  v2.13.4
npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! syscall getaddrinfo

npm ERR! network getaddrinfo ENOTFOUND registry.npmjs.org
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/IBRAHIMALHUSSAIN/.taco_home/node_modules/taco-remote-multiplexer/latest/npm-debug.log

我记得在某处读到我应该启用一次安全构建然后禁用它以初始化远程服务器安全配置。每当我尝试在安全构建模式remotebuild 下运行时,我都会收到此错误:

无法建立与https://192.168.1.10:3000/cordova 的安全连接。验证构建服务器是否在安全模式下运行。

我还尝试通过重新创建 PIN、生成和重置证书来解决此问题。

我该如何解决这个问题?

【问题讨论】:

  • 如果您使用 --secure false,请务必在 Visual Studio 中也将“安全模式”设置为 false。 PIN 仅用于安全模式,因此不会产生任何影响。进入 Windows 的命令行并通过键入“ping 192.168.1.10”验证您实际上可以到达 192.168.1.10 - 鉴于上述错误,听起来您不能。
  • @ChuckLantz 刚刚用 Mac 终端的更多输出更新了我的问题。当我尝试从 Visual Studio 运行我的项目时,我能够同时 ping 两种方式和远程构建服务器响应,但它仍然会因上述相同的错误而失败。

标签: ios cordova visual-studio-cordova


【解决方案1】:

从您在那里包含的控制台输出来看,您的 mac 似乎无法访问 npm 存储库:

npm ERR! network getaddrinfo ENOTFOUND registry.npmjs.org

声明的那一行

New build request submitted

表示visual studio已经成功连接到remotebuild服务器,并且已经发送了一个要构建的项目。作为构建项目的一部分,remotebuild 会动态获取一些 npm 包,以确保它是面向未来的并且可以与多个不同版本的 Cordova 一起使用。

如果您无法或不愿意让您的 mac 看到 npm 存储库,那么可以提供您自己的替代函数来确定要加载哪个包来实际构建项目。

我强烈建议不要这样做,但这是删除该功能的最简单方法:

  1. 在可以访问 npm 的机器上,“npm install taco-remote-lib”下载默认包,为 remotebuild 执行 cordova 构建,然后在“npm install cordova@”中下载你想要的单一版本使用。打开 taco-remote-lib/ios/iosBuild.js 并替换

    TacoPackageLoader.lazyRequire("cordova", "cordova@" + cordovaVersion, buildInfo.logLevle).done(function pkg) { 科尔多瓦 = pkg;

cordova = require("cordova");

并删除您删除的函数末尾的“}, function (err) { [...] })”。

  1. 将整个 taco-remote-lib 文件夹复制到 mac,因为它现在是一个独立的实例,专门用于特定的 cordova 版本
  2. 在“myRedirector.js”某处创建一个新的 js 文件,并为其提供类似于以下内容:

.

module.exports.getPackageToServeRequest = function (request) {
    return require("/path/to/copied/taco-remote-lib");
}
  1. 创建如下所示的配置文件:

.

{
    "modules": {
        "taco-remote": {
            "requirePath": "taco-remote",
            "mountPath": "cordova",
            "redirector": "/path/to/myRedirector.js",
        }
    }
}
  1. 通过运行“remotebuild --config path/to/the/config.json”启动remotebuild

这应该使用自定义请求重定向器启动 remotebuild,该重定向器使用您自定义修改的 taco-remote-lib 包来构建所有请求。

这不会尊重 VS 为构建指定的 cordova 版本,因为这需要能够按需从 NPM 下载这些版本。

【讨论】:

  • 当我运行remotebuild --secure false 时,我的 Mac 没有连接到互联网 .. 这似乎是问题吧?
  • 是的,没错。如果您在断开互联网连接之前运行一个构建,它应该缓存它需要的包(除非您使用它需要获取的不同版本的cordova)并且它应该可以工作。虽然它可能会在几个小时后使其缓存失效,但这是我们在下一个版本中修复的问题。
【解决方案2】:

也许是因为操作系统有沙盒系统

【讨论】:

  • 请给我更详细的答案。你指的是哪个操作系统? Mac 还是 Windows?如何检查和禁用沙盒系统?
【解决方案3】:

在我的情况下,我的 mac 名称中有“'”。删除“'”后,它确实按主机名连接。

【讨论】:

    猜你喜欢
    • 2014-07-03
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多