Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 脱机模式下的Gulp Browsersync和http代理中间件_Javascript_Angularjs_Gulp_Browser Sync_Node Http Proxy - Fatal编程技术网

Javascript 脱机模式下的Gulp Browsersync和http代理中间件

Javascript 脱机模式下的Gulp Browsersync和http代理中间件,javascript,angularjs,gulp,browser-sync,node-http-proxy,Javascript,Angularjs,Gulp,Browser Sync,Node Http Proxy,如果代理到本地主机服务器,Browsersync与脱机工作吗 我有一个部署在localhost:3000的angular应用程序,请求部署在localhost:8080的api服务器。到api服务器的http请求由Browsersynchttp代理中间件代理。如果我连接了internet,一切正常,但如果我脱机,gulp控制台会出现以下错误: [HPM] Proxy error: ENOENT localhost:8080/data/pet 和在浏览器控制台上: Failed to load

如果代理到本地主机服务器,Browsersync与脱机工作吗

我有一个部署在
localhost:3000
的angular应用程序,请求部署在
localhost:8080
的api服务器。到api服务器的http请求由Browsersync
http代理中间件
代理。如果我连接了internet,一切正常,但如果我脱机,gulp控制台会出现以下错误:

[HPM] Proxy error: ENOENT localhost:8080/data/pet
和在浏览器控制台上:

Failed to load resource: the server responded with a status of `500 (Internal Server Error)`
我知道错误不在服务器上,因为我仍然可以通过浏览器访问
localhost:8080/data/pet

由于api服务器部署在本地,所以我需要一个internet连接来代理http请求似乎有些奇怪

angular应用程序及其所有配置都是使用

这是我的gulp服务器配置:

“严格使用”;
var path=require('path');
var gulp=需要(“gulp”);
var conf=require('./conf');
var browserSync=require('browser-sync');
var browserSyncSpa=require('browser-sync-spa');
var util=require('util');
var proxyMiddleware=require('http-proxy-middleware');
函数browserSyncInit(baseDir,浏览器){
浏览器=浏览器===未定义?“默认”:浏览器;
var=null;
if(baseDir==conf.paths.src | |(util.isArray(baseDir)和&baseDir.indexOf(conf.paths.src)!=-1)){
路线={
“/bower_components”:“bower_components”
};
}
变量服务器={
baseDir:baseDir,
路线:路线
};
server.middleware=代理中间件(“/data”,
{
目标:'http://localhost:8080'
});
browserSync.instance=browserSync.init({
起始路径:“/”,
服务器:服务器,
浏览器:浏览器,
在线:错误
});
}
browserSync.use(browserSyncSpa)({
选择器:'[ng app]'//仅用于角度应用
}));
狼吞虎咽的任务('serve',['watch'],函数(){
browserSyncInit([path.join(conf.paths.tmp,/service'),conf.paths.src]);
});
gulp.task('service:dist',['build'],function()){
browserSyncInit(conf.path.dist);
});
gulp.task('service:e2e',['inject'],函数(){
browserSyncInit([conf.paths.tmp+'/service',conf.paths.src],]);
});
吞咽任务('serve:e2e dist',['build'],函数(){
browserSyncInit(conf.path.dist,[]);
});
这是我的package.json:

{
  "name": "petStore",
  "version": "0.0.0",
  "dependencies": {},
  "scripts": {
    "test": "gulp test"
  },
  "devDependencies": {
    "gulp": "~3.9.0",
    "gulp-autoprefixer": "~2.3.1",
    "gulp-angular-templatecache": "~1.6.0",
    "del": "~1.2.0",
    "lodash": "~3.9.3",
    "gulp-csso": "~1.0.0",
    "gulp-filter": "~2.0.2",
    "gulp-flatten": "~0.0.4",
    "gulp-jshint": "~1.11.0",
    "gulp-load-plugins": "~0.10.0",
    "gulp-size": "~1.2.1",
    "gulp-uglify": "~1.2.0",
    "gulp-useref": "~1.2.0",
    "gulp-util": "~3.0.5",
    "gulp-ng-annotate": "~1.0.0",
    "gulp-replace": "~0.5.3",
    "gulp-rename": "~1.2.2",
    "gulp-rev": "~5.0.0",
    "gulp-rev-replace": "~0.4.2",
    "gulp-minify-html": "~1.0.3",
    "gulp-inject": "~1.3.1",
    "gulp-protractor": "~1.0.0",
    "gulp-sourcemaps": "~1.5.2",
    "gulp-less": "~3.0.3",
    "gulp-angular-filesort": "~1.1.1",
    "main-bower-files": "~2.8.0",
    "merge-stream": "~0.1.7",
    "jshint-stylish": "~2.0.0",
    "wiredep": "~2.2.2",
    "karma": "~0.12.36",
    "karma-jasmine": "~0.3.5",
    "karma-phantomjs-launcher": "~0.2.0",
    "karma-angular-filesort": "~0.1.0",
    "karma-ng-html2js-preprocessor": "~0.1.2",
    "concat-stream": "~1.5.0",
    "require-dir": "~0.3.0",
    "browser-sync": "~2.7.12",
    "browser-sync-spa": "~1.0.2",
    "http-proxy-middleware": "~0.2.0",
    "chalk": "~1.0.0",
    "uglify-save-license": "~0.4.1",
    "wrench": "~1.5.8"
  },
  "engines": {
    "node": ">=0.10.0"
  }
}
这是http调用:

  $http.get("/data/pet").then(function (result) {
        vm.petName = result.data.name;
      });
和bower.json

{
  "name": "petStore",
  "version": "0.0.0",
  "dependencies": {
    "angular-resource": "~1.4.0",
    "angular-ui-router": "~0.2.15",
    "bootstrap": "~3.3.4",
    "angular-bootstrap": "~0.13.0",
    "malarkey": "yuanqing/malarkey#~1.3.0",
    "toastr": "~2.1.1",
    "moment": "~2.10.3",
    "animate.css": "~3.3.0",
    "angular": "~1.4.0"
  },
  "devDependencies": {
    "angular-mocks": "~1.4.0"
  },
  "resolutions": {
    "angular": "~1.4.0"
  }
}

刚刚做了一些测试,我可以确认这个问题。 使用“npm测试”运行库测试。 它将设置实际的服务器来运行一些测试

联机时,所有测试都会成功。 但是当离线运行测试时,它将产生相同的错误消息

实际的代理功能由提供

该问题已报告于:

我也很好奇为什么http代理不能离线使用


(免责声明:我是http代理中间件的作者。)

看起来core browsersync不需要internet连接。有些功能确实如此

以下设置允许您将browsersync切换到脱机模式:

我在server.js文件中设置了此属性,我的应用程序离线工作:

browserSync.instance=browserSync.init({
起始路径:“/”,
服务器:服务器,
浏览器:浏览器,
在线:错误

});

您是否找到了解决方案?