【问题标题】:Object has no method replace in node-validator module对象在节点验证器模块中没有方法替换
【发布时间】:2012-01-23 18:56:57
【问题描述】:

我正在使用以下节点模块,因为我想防止 XSS: https://github.com/chriso/node-validator

        str = str.replace(non_displayables[i], '');
                  ^
TypeError: Object 0 has no method 'replace'
    at remove_invisible_characters (C:\Users\Jack\Desktop\Dropbox\Nimble\node_mo
dules\validator\lib\xss.js:180:19)

我正在尝试清理以下信息并创建一个 JSON 对象:

var story = {
  _id:          sanitize(data._id).xss(),         //string
  title:        sanitize(data.title).xss(),       //string
  deadline:     sanitize(data.deadline).xss(),    //date string
  description:  sanitize(data.description).xss(), //string
  sp:           sanitize(data.sp).xss(),          //number
  value:        sanitize(data.value).xss(),       //number
  roi:          sanitize(data.roi).xss(),         //decimal number
  type:         sanitize(data.type).xss(),        //string
  lane:         sanitize(data.lane).xss()         //Typically 0
}

我将模块包含在我的代码顶部:sanitize = require('validator').sanitize;

模块中 xss.js 的第 178 - 183 行:

function remove_invisible_characters(str) {
    for (var i in non_displayables) {
        str = str.replace(non_displayables[i], '');
    }
    return str;
}

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    从错误来看,您似乎正在将0(一个数字)传递给正在执行str = str.replace(...); 行的任何函数。数字没有replace 功能。如果该函数期望并要求其输入是字符串,则可以确保通过使用str = String(str).replace(...); String 构造函数,当在没有new 的情况下调用时,会进行类型转换; details.

    【讨论】:

      猜你喜欢
      • 2012-03-12
      • 1970-01-01
      • 2015-03-09
      • 2015-05-02
      • 2016-05-04
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 2014-04-08
      相关资源
      最近更新 更多