如何解决错误TypeError:self._form.on不是函数?

时间:2018-08-06 01:41:02

标签: javascript node.js reactjs request electron

我正在使用node js请求模块将发布请求发送到网站。查看网站请求后,它使用“表单数据”作为有效内容。该页面的内容类型为“ application / x-www-form-urlencoded”。我的脚本是通过在电子应用程序中单击按钮来运行的。我的代码示例如下:

let options2 = {
                    method: "POST",
                    uri: site_url,//predefined
                    followAllRedirects: true,
                    headers: {
                        'Origin': checkout_host,//predefined
                        'Content-Type': 'application/x-www-form-urlencoded',
                        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
                        'Accept-Language': 'en-US,en;q=0.8',
                        'Referer': referer//predefined
                        'User-Agent': UA//predefined
                    },
                    formData: {
                        information that site is requesting
                    }
request(options2, (err, resp, body) => }
        *I end up repeating the code for different information here*
       }

运行代码时,这是我遇到的错误,它立即停止:

TypeError: self._form.on is not a function

1 个答案:

答案 0 :(得分:2)

似乎发生这种情况的原因是,在处理错误时,请求模块在.on对象上使用了FormData方法。但是,这不是浏览器FormData,而是从另一个依赖项中拉出来的。

Node可以很好地识别所有内容,但是浏览器存在一些麻烦。我假设这是因为您正在将此代码用于Electron应用程序,所以可能是问题所在。

查看此内容是否有帮助:https://github.com/request/request/issues/1961#issuecomment-233956542

否则,如果这是在前端,则使用fetch()可能是一个警告。 https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch


另一个骇人听闻的选择是进入request模块(特别是request.js)并搜索self._form.on并注释掉该块。但是我完全不建议这样做,因为这只是一种不好的做法,不能真正解决问题,并且可能导致意想不到的副作用。