【问题标题】:What is the hapi equivalent of res.writehead and res.write?res.writehead 和 res.write 的 hapi 等价物是什么?
【发布时间】:2018-01-05 22:54:40
【问题描述】:

我正在使用 ccavenue npm 模块将支付网关集成到我的网站中。 该模块的问题在于它使用res.writeres.writehead 而传递给模块的res 变量是由hapi 生成的,因此会产生错误。那么,res.writeheadres.write 的 hapi 等价物是什么。

这是我的 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)

【问题讨论】:

    标签: javascript node.js express hapijs reply


    【解决方案1】:

    我假设您使用的是旧版本的 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 在 raw 属性下。

    【讨论】:

    • 谢谢,我需要将 res.writeres.writeHead 替换为 res(body)
    猜你喜欢
    • 2014-05-08
    • 2014-06-12
    • 1970-01-01
    • 2022-11-28
    • 2011-03-17
    • 2014-06-18
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多