防止React JS覆盖脚本

时间:2018-12-12 10:21:16

标签: javascript jquery reactjs xmlhttprequest prototype

我对JavaScript并不了解,但是我很熟悉导航和编写自己的代码。

我花了很多时间试图找出我在HTTP请求中遇到的问题,直到最近才意识到这可能是导致此问题的其他特定脚本。

看起来好像是React JS。

我对此并不熟悉。 (我确实进行了查找,并搜索了很多不冲突的选项)

基本上,从我执行“ XMLHttpRequest.prototype.open”以监视传入的HTTP请求的那一刻起,我所有的脚本似乎都通过了React JS文件。

之所以这样,是因为我正在浏览器的控制台中记录脚本的步骤和结果,并且从那时起,它们都被归为“ commons-##########。js”我运行XMLHttpRequest.prototype。

我在commons-##########。js文件的标题中看到了这一点:

/** @license React v16.4.1
 * react-dom.production.min.js
 *
 * Copyright (c) 2013-present, Facebook, Inc.

问题在于它似乎正在影响我自己的脚本无法正常运行。

有人知道为什么会发生这种情况,以及如何解决? 我希望我的JS脚本能够在不受React JS干扰的情况下运行。

(这不是我自己的网站,而是我经常用于商业的网站。所做的修改是为了帮助我,没有恶意。)

谢谢。


请注意,我知道突出显示的注释部分不会影响我的代码。我只是为了解释为什么我认为这是导致问题的React JS脚本。

这是控制台中的实际错误(部分错误):

Uncaught SyntaxError: Unexpected token o in JSON at position 1
    at JSON.parse (<anonymous>)
    at XMLHttpRequest.<anonymous> (<anonymous>:122:29)
    at XMLHttpRequest.a (commons-9702d5b….js:34)
(anonymous) @   VM14804:122
a   @   commons-9702d5b….js:34
XMLHttpRequest.send (async)     
XMLHttpRequest.send @   VM14804:70
(anonymous) @   commons-9702d5b….js:34
(anonymous) @   commons-9702d5b….js:34

我已经尝试了许多方法,但我看不到为什么无法JSON解析响应或执行其他许多操作的任何问题。 关于该代码的某些事情正在干扰我自己的代码。

JS脚本是一个冗长且缩小的文件,因此很难确定单独的令人讨厌的代码部分。

2 个答案:

答案 0 :(得分:1)

我确定99.99%的问题不在于React。 commons-#.js文件是您的脚本与您正在使用的任何第三方库(例如React)捆绑到一个文件中以便从Web服务器高效加载的结果-这是标准做法,几乎不会引起任何问题。您在文件顶部看到的/** @license React v16.4.1注释仅仅是因为捆绑过程已配置为在输出中保留许可证信息。

答案 1 :(得分:0)

问题是由从服务器以错误的形式接收到的JSON响应或转换不正确引起的。

  

JSON中位置1处的意外令牌o

错误表示[object ...]字符串(将对象强制转换为字符串的结果)已传递给JSON.parse。未知此错误的来源。可以在devtools的“网络”标签中检查 XHR 请求,以识别问题是否由错误的响应引起,因此可以将其报告给API所有者。

问题不是由React引起的。 React本身不能做任何事情,它是 UI 库。它不以任何方式使用XMLHttpRequest。该错误是由同时使用React和XHR的某些代码引起的。可以在堆栈的这一部分中对其进行调试:

    at XMLHttpRequest.<anonymous> (<anonymous>:122:29)
    at XMLHttpRequest.a (commons-9702d5b….js:34)
(anonymous) @   VM14804:122

此问题需要由代码所属的一方解决-网站所有者,其他浏览器扩展程序,您使用的第三方组件等。