【问题标题】:Modx packet manager ext-all.js errorModx 数据包管理器 ext-all.js 错误
【发布时间】:2015-03-30 11:50:25
【问题描述】:

我对新安装的 modx 站点有疑问。包管理器卡在“加载”状态。

嗅探一些数据包,发现数据交换很顺利,所以没有 curl 问题。

浏览器控制台出现 ext-all.js 错误:“SyntaxError: expected expression, got '}' ext-all.js:1:41”

在 modx github 上搜索类似问题,结果是 https://github.com/modxcms/revolution/issues/12093 是时区问题吗?不知道如何测试它是否是,或者如何避免它。 (尝试更改时区并重新安装xampp,无效)

有没有人遇到过这样的问题或者有解决办法?

  • win 8.1 sl,xampp 本地服务器
  • 启用卷曲
  • 时区 UTC+3 莫斯科 RTZ2
  • modx 版本:2.3.3-pl
  • compress_css = 否
  • compress_js = 否

js 错误在所有浏览器中触发

【问题讨论】:

  • Измени часовой пояс на "Багдад"。 Если в часовом поясе дело, то поможет.
  • @Vasis,更改时区对服务器端和客户端都没有影响
  • 在 ext-base.js 中处理某种 XMLHttpRequest 时触发错误,女巫返回响应:"{"success":true,"total":"15","re​​sults":}"

标签: javascript extjs modx modx-revolution


【解决方案1】:

这是 GitHub (https://github.com/modxcms/revolution/issues/13079) 上的一个已知问题。请将语言环境系统设置更改为 en_EN 以进行测试。由于该语言环境在输出中不会产生 UTF8 符号,因此错误可能会消失。

【讨论】:

  • 我想我已经测试了所有的语言环境名称字符串,错误仍然存​​在。这里有一些调试 modx.class.php _initCulture 函数的截图。 prntscr.com/ca47tw prntscr.com/ca48fv prntscr.com/ca48q9 setLocale(LC_ALL, "en_EN") 只返回 false,带有 en_EN 或任何其他语言环境名称。在互联网上搜索解决方案结果一无所获,我认为没有可以在 Windows 上解决此问题的 hack。
  • 您要切换到的语言环境必须存在于主机上。否则无法更改。
  • 我已经更新了自己的答案,并通过一些奇怪的研究来避免这个问题。
【解决方案2】:

由于问题仍未解决,我将对其进行一些研究。

问题的根源是setLocale() php 函数无法在Windows 7 等服务器环境下设置任何兼容utf8 的语言环境。所以strftime等依赖于语言环境的函数转换成json输出时会出现错误:

strftime('%b %d %Y', 1471864827)
"��� 22 2016"

所以“暂时”解决这个问题是关于改变你的服务器环境,因为没有解决方案让setLocale() 在 Windows 上与 utf8 一起正常工作。

更新:

使用 Powershell 探索我的系统文化设置表明,将全局设置区域设置为 English_United States.1252 为我解决了数据包管理器的问题。但我认为这只是一个幸运的情况,因为调用 exmaple json_encode(strftime("%h", 1471864827)) 仍然返回 false,因为 cp1252 与 utf-8 不兼容,所以这个设置只能是一个危险的、奇怪的行为临时解决方案.

据我所知,没有办法在 Windows 系统上安装兼容 utf8 的语言环境(setLocale 可以使用),所以在修复错误之前仍然没有任何技巧可以避免这个错误。

【讨论】:

    猜你喜欢
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多