Javascript 无效或意外的标记 (\u0)

2024-01-07

正如您将在图像中看到的那样,有许多红点,显然每个红点都标识为\u0

文件内容或编辑器没有区别。

正在编译或未编译的 JS 文件没有区别,事实上,由于空格和换行符,在非缩小版本中会出现更多红点,甚至加载一个空白文件,然后添加一些简单的内容,如 console.log('abc') 将仅导致所有红点;

添加内容

这些不可见且不可选择的字符在文件末尾出现的次数与我在脚本任何其他部分中键入的任何其他字符的次数相同。

不可见字符并不存在于磁盘上的实际文件本身中,仅存在于由 Web 服务器提供服务的文件中。

删除内容

如果我启动虚拟机,然后从 JS 脚本中的任何位置删除字符,那么相同数量的字符将从文件的 Web 响应请求中的内容末尾消失。

未经修改的使用

当我第一次启动虚拟机并在浏览器中访问该网站时,只要文件从未以任何方式修改,多个请求就不会出现错误。

结论

如果我在虚拟机运行时以任何方式修改文件,结果就好像服务器以某种方式保留了服务器首次启动或首次提供内容时文件的字节大小的快照。然后,在服务器运行时对文件内容进行更改时,如果文件变小,它会截断内容;如果文件变大,它会用 \u0 填充,就像填充文件一样。

可以清除故障,但这不是永久性的

如果我在文件损坏后重新启动虚拟机,并使用之前导致错误的修改刷新对 js 文件的请求,则错误就会消失,我的新更改也正常。

我还可以撤消破坏响应的最后更改,并且正常操作将继续。

这个问题从 11 月 18 日起几天后才开始发生,我之前已经运行了一个多月的设置,没有出现任何问题,我记得最近唯一改变的是上周有几个 Windows 更新?

我在 Windows 10 上运行 Virtualbox VM Centos 7、Apache 2.4.6 + PHP 7.1.12,并使用 VBox Guest Additions 共享文件夹配置将源代码目录安装到 VM。

看来这个问题与VM及其服务有关 资产,某种形式的填充和剔除(如果文件在加载后发生更改)。

重新启动 httpd 服务没有任何影响,只有在每次文件修改后重新启动虚拟机才能解决问题。

还有其他人遇到过这个问题或者能够重现它吗?

VM 设置(复制)

如果您想尝试重现该问题,以下是我在学习如何创建和运行本地开发环境时一直在构建的说明:

https://docs.google.com/document/d/11cBF75hfcehB3np4nlLhc1EqIOKVchKIuQJyrvn8ztk https://docs.google.com/document/d/11cBF75hfcehB3np4nlLhc1EqIOKVchKIuQJyrvn8ztk

更新 1 - 2017 年 11 月 26 日

我尝试从头开始重建新的虚拟机,但仍然存在同样的问题。

我注意到 CSS 文件也发生了这种情况,作为测试,我更改了以下代码:

.flexData.tools .settings:hover {
    color: #0a0a0a;
}

/*# sourceMappingURL=flexData.css.map */

添加一个名为 test 的类:

.flexData.tools .settings:hover {
    color: #0a0a0a;
}
.test {
    color:blue;
}

/*# sourceMappingURL=flexData.css.map */

结果在服务器提供的文件末尾看起来像这样:

.flexData.tools .settings:hover {
    color: #0a0a0a; 
}

/*# sourceMappingURL=flexData.css.map */
�������������������������

请注意,测试类在注释之前缺失,而奇怪的字符在注释之后出现。

然后我重新启动虚拟机,然后在浏览器中按 F5(刷新),字符消失,我的测试类出现:

.flexData.tools .settings:hover {
    color: #0a0a0a; }
.test {
    color:blue;
}
/*# sourceMappingURL=flexData.css.map */

我检查了 HTML 源代码响应,它是not对 PHP 的 HTML 输出执行此操作。

更新 2 - 2017 年 11 月 26 日

我安装了 XAMP 并测试了上述所有问题...没有任何文件 修改导致了错误,因此这证实了存在某种 虚拟机或 httpd 服务出现文件缓存问题 虚拟机。


我也遇到了同样的问题,是虚拟机造成的。

For NGINX在位置/块中添加发送文件关闭环境。

location / {
    ...
    sendfile off;
}

For Apache, 寻找启用发送文件 in httpd.conf并将其设置为off:

EnableSendfile off

您必须重新启动服务才能使更改生效,需要在 Web 浏览器中硬刷新 (CTRL+F5) 才能看到更改生效。

EnableMMAP 和 EnableSendfile:在支持它的系统上,可以使用内存映射或 sendfile 系统调用来传送文件。这通常会提高服务器性能,但是从网络安装的文件系统提供服务时必须关闭或者您的系统对这些功能的支持已被破坏。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript 无效或意外的标记 (\u0) 的相关文章

随机推荐