Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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
Angularjs Grunt Connect Prism模拟服务器未记录请求_Angularjs_Gruntjs_Protractor_Angularjs E2e_Ngmocke2e - Fatal编程技术网

Angularjs Grunt Connect Prism模拟服务器未记录请求

Angularjs Grunt Connect Prism模拟服务器未记录请求,angularjs,gruntjs,protractor,angularjs-e2e,ngmocke2e,Angularjs,Gruntjs,Protractor,Angularjs E2e,Ngmocke2e,我的目标是使用()捕获来自AngularJS应用程序的服务器请求,然后用作量角器E2E测试的模拟数据 或者,我正在寻找更好的Grunt服务器模拟数据库的建议 这个项目还处于初级阶段,但是我想我还是发布我的问题:我无法保存模拟数据。当我启动grunt服务器时,我可以看到prism正在运行,但它仍然无法保存。我从作者文章中的评论中读到,人们试图将“context”变量作为根来运行,而我的服务器api就是从根来运行的。因此,我尝试只从/活动端点录制,但没有成功 $grunt服务器 正在运行“服务器”任

我的目标是使用()捕获来自AngularJS应用程序的服务器请求,然后用作量角器E2E测试的模拟数据

或者,我正在寻找更好的Grunt服务器模拟数据库的建议

这个项目还处于初级阶段,但是我想我还是发布我的问题:我无法保存模拟数据。当我启动grunt服务器时,我可以看到prism正在运行,但它仍然无法保存。我从作者文章中的评论中读到,人们试图将“context”变量作为根来运行,而我的服务器api就是从根来运行的。因此,我尝试只从/活动端点录制,但没有成功

$grunt服务器

正在运行“服务器”任务

正在运行为:/actions/创建的“棱柱”任务棱柱到本地主机:8888

救命

// Gruntfile.js

grunt.initConfig({
  connect: {
    server: {
      options: {
        keepalive: true,
        hostname: '*',
        port: 8888,
        base: '.tmp',

        middleware: function(connect, options) {
          return [
            require('grunt-connect-prism/middleware'), // will

            modRewrite(['!\\.?(js|css|html|eot|svg|ttf|woff|otf|css|png|jpg|gif|ico) / [L]']),
            mountFolder(connect, '.tmp'),
          ];
        }
      }
    }
  },

  prism: {
    options: {
      mode: 'record',
      mocksPath: './mocks',        
      // server
      host: 'localhost',
      port: 8888,
      https: false,
      // client
      context: '/campaigns/',
    }
  },

  // more stuff I removed

});    

// development
grunt.registerTask('server', function() {
  grunt.task.run([
    'stuff ...'
    'prism',
    'stuff ...',
  ]);
});        

// more stuff I removed

grunt.loadNpmTasks('grunt-contrib-connect');
grunt.loadNpmTasks('grunt-connect-prism');

解决了我的问题:首先,我需要在我的Vagrant文件中列出另一个端口的白名单

其次,我需要启动另一个grunt connect服务器,作为服务器端调用的代理,与运行在不同端口上的客户端分离

第三,我需要向服务器端代理添加访问控制头

// Adding the middleware
connect: {
  // clientside server
  server: {
    options: {
      keepalive: true,
      hostname: '*',
      port: 8888,
      base: 'public/',
      middleware: function(connect, options) {
        return [
          // ... dish static files
        ]
      }
    }
  },

  // serverside proxy
  proxy: {
    options: {
      hostname: '*',
      port: 9000,
      middleware: function(connect, options, middlewares) {
        middlewares.unshift(require('grunt-connect-prism/middleware'));

            // add REST stuff
            middlewares.unshift(function (req, res, next) {
              console.log('proxy', req.url);

              res.setHeader('Access-Control-Allow-Credentials', 'true');
              res.setHeader('Access-Control-Allow-Headers', 'accept, x-version, content-type, authorization');
              res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
              res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8888');
              res.setHeader('Access-Control-Expose-Headers', 'X-Version, X-Maintenance-Mode');
              res.setHeader('Access-Control-Max-Age', '1728000');

              next();      
            });
        return middlewares;
      }
    }
  }
},

// Adding prism configuration.
prism: {
  options: {
    mode: 'record',
    mocksPath: 'mocks',
    host: 'localhost',
    port: 3000,
    https: false,
    context: '/',
  }
},

// Running prism
grunt.registerTask('server', [
// ...

'connect:proxy', // proxy server that will log calls to mock
'prism:proxy', // initiates prism library
'connect:server' // client connect server to dish out client files
]);