我一直在使用nitrous.io 虚拟盒,构建一个包含browsersync.io的 gulp 任务。我已经能够通过 gulp 安装和实例化浏览器同步,但我无法获得有效的代理地址。
这是我的 gulp.js 文件的截断版本:
var gulp = require('gulp');
var browserSync = require('browser-sync');
var reload = browserSync.reload;
gulp.task('browser-sync', function () {
browserSync.init( {
server: {
baseDir: '~/workspace/www/XXXXXXX/',
proxy: 'XXXXXX-XXXXXX.euw1.nitrousbox.com:3000/XXXXXXX/',
port: 4002
}
});
});
Nitrous 很友好地发布了这个演示,实时重载:http ://help.nitrous.io/setting-up-gulp-with-livereload-and-sass/ ,他们将实时重载端口设置为4002 因为他们为 HTTP 分配端口的方式。不管我为无法解析的浏览器同步获取本地主机地址。这是一些示例输出:
[00:19:57] Starting 'browser-sync'...
[00:19:57] Finished 'browser-sync' after 7.4 ms
[BS] Local: >>> http://localhost:3001
[BS] External: >>> http://192.168.233.209:3001
[BS] Serving files from: ~/workspace/www/XXXXXXX/
从上面,我可以看到端口没有得到尊重,但无论如何,这些地址仅适用于 localhost 类型的环境。谁能指出我正确的方向?
补充
进一步挖掘,我已经阅读了来自 nitrous http://help.nitrous.io/faq-localhost/的文档 ,因此我对盒子内的端口分配和转发有了更多的了解。我的 gulp 文件现在如下所示:
var gulp = require('gulp');
var browserSync = require('browser-sync');
var reload = browserSync.reload;
gulp.task('browser-sync', function () {
browserSync.init( {
server: {
baseDir: '~/workspace/www/XXXXXXX/',
proxy: '0.0.0.0:3000/XXXXXXX/',
port: 4002
}
});
});
假脱机后 gulp 的响应gulp browser-sync
是相同的,但现在如果我将浏览器定向到XXXXXX-XXXXXX.euw1.nitrousbox.com:3001/XXXXXXX/
我会得到一个响应Cannot GET /XXXXXXX/
,我认为它来自node.js。我相信这意味着浏览器同步服务器没有正确地假脱机。