代码之家  ›  专栏  ›  技术社区  ›  Satnam Sandhu

res.writehead和res.write的hapi等价物是什么?

  •  0
  • Satnam Sandhu  · 技术社区  · 8 年前

    我正在使用ccavenue npm模块将支付网关集成到我的网站中。 该模块的问题在于它使用 res.write res.writehead res 传递给模块的变量由hapi生成,从而生成错误。那么,hapi的等价物是什么 res.writehead文件 资源写入 .

    这是我的hapi代码:

    var ccavenue = require('ccavenue');
    
    ccavenue.setMerchant("******");
    ccavenue.setWorkingKey("*******************");
    ccavenue.setRedirectUrl("/redirect-url");
    
    
    module.exports = function(plugin, options, next) {
    
        plugin.route({
            method: 'GET',
            path: '/checkout',
            handler: function(request, reply) {
                var param = {
                    billing_cust_address: 'Bangalore',
                    billing_cust_name: 'Nitish Kumar'
                };
            ccavenue.setOrderId("8981455644");
            ccavenue.setOrderAmount("1000");
            ccavenue.setOtherParams(param);
            ccavenue.makePayment(reply);
            }
        });
    
    }
    

    这是模块功能:

    function makePayment(res) {
        var errors = helper.checkRequiredField(config);
        if(errors.length > 0) {
            throw new Error(errors);    
        }
    
        var Checksum = helper.getCheckSum(config.merchantId, config.orderAmount, config.orderId, config.redirectUrl, config.workingKey); //This function is to verify 
    
        var body = "<form method='post' name='checkout' id='checkout' action='https://www.ccavenue.com/shopzone/cc_details.jsp'>" +
              "<input type=hidden name='Merchant_Id' value='" + config.merchantId + "'>" +
              "<input type=hidden name='Amount' value='" + config.orderAmount + "'>" +
              "<input type=hidden name='Order_Id' value='" + config.orderId + "'>" +
              "<input type=hidden name='Redirect_Url' value='" + config.redirectUrl +"'>" +
              "<input type=hidden name='Checksum' value='" + Checksum + "'>" +
              "<input type=hidden name='TxnType' value='A'>" +
              "<input type=hidden name='ActionID' value='TXN'>";
    
              for(var key in otherParams) {
                    body += "<input type=hidden name='"+ key +"' value='" + otherParams[key] + "'>";
              }
    
              body += "</form><script type='text/javascript'>" +
                  "document.getElementById('checkout').submit();" +
              "</script>";
    
        res.writeHead(200, {
            'Content-Length': Buffer.byteLength(body),
            'Content-Type': 'text/html'
        });
    
        res.write(body);
        res.end();
    }
    

    这是错误:

    Debug: internal, implementation, error 
        TypeError: Uncaught error: res.writeHead is not a function
        at Object.makePayment (/home/satnam-sandhu/Workstation/cuboid.io/servers/web/node_modules/ccavenue/index.js:59:8)
        at Object.plugin.route.handler (/home/satnam-sandhu/Workstation/cuboid.io/servers/web/ccavenue/index.js:21:15)
        at Object.exports.execute.internals.prerequisites.internals.handler.finalize [as handler] (/home/satnam-sandhu/Workstation/cuboid.io/node_modules/hapi/lib/handler.js:101:51)
        at /home/satnam-sandhu/Workstation/cuboid.io/node_modules/hapi/lib/handler.js:32:23
        at internals.Protect.run.finish [as run] (/home/satnam-sandhu/Workstation/cuboid.io/node_modules/hapi/lib/protect.js:60:12)
        at exports.execute.finalize (/home/satnam-sandhu/Workstation/cuboid.io/node_modules/hapi/lib/handler.js:26:22)
        at each (/home/satnam-sandhu/Workstation/cuboid.io/node_modules/hapi/lib/request.js:401:16)
        at iterate (/home/satnam-sandhu/Workstation/cuboid.io/node_modules/hapi/node_modules/items/lib/index.js:36:13)
        at done (/home/satnam-sandhu/Workstation/cuboid.io/node_modules/hapi/node_modules/items/lib/index.js:28:25)
        at internals.Auth.test.internals.Auth._authenticate (/home/satnam-sandhu/Workstation/cuboid.io/node_modules/hapi/lib/auth.js:222:16)
        at internals.Auth.test.internals.Auth.authenticate (/home/satnam-sandhu/Workstation/cuboid.io/node_modules/hapi/lib/auth.js:197:17)
        at each (/home/satnam-sandhu/Workstation/cuboid.io/node_modules/hapi/lib/request.js:401:16)
        at iterate (/home/satnam-sandhu/Workstation/cuboid.io/node_modules/hapi/node_modules/items/lib/index.js:36:13)
        at done (/home/satnam-sandhu/Workstation/cuboid.io/node_modules/hapi/node_modules/items/lib/index.js:28:25)
        at /home/satnam-sandhu/Workstation/cuboid.io/node_modules/hapi/lib/protect.js:50:16
        at wrapped (/home/satnam-sandhu/Workstation/cuboid.io/node_modules/hapi/node_modules/hoek/lib/index.js:875:20)
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   simon-p-r    8 年前

    我假设您使用的是hapi 17.0.0的旧版本,以便使用html进行回复 https://github.com/hapijs/vision . 此外,本示例教程应该会有所帮助 https://futurestud.io/tutorials/hapi-how-to-render-views . Hapi将为您完成大部分工作。如果要使用节点的res和req http服务器对象,需要从hapi的内部公开原始请求和响应对象,如下所述 https://hapijs.com/api/16.5.2#request-properties 在原始属性下。

    推荐文章