liferay 7 - 不匹配的匿名定义()
liferay 7 - Mismatched anonymous define()
我正尝试在我的 liferay 7 portlet 中包含 sockjs (v1.1.2),但我收到此警告:
Mismatched anonymous define() module: function ()...
然后库未加载。
我直接将 .js 文件包含在我的 liferay-portlet.xml 中,如下所示:
<header-portlet-javascript>/common/js/sockjs.js</header-portlet-javascript>
我不知道如何让它发挥作用
看起来您 运行 遇到了 LPS-68298. If you are using Liferay 7.0 DXP SP2+ or Liferay 7.0 CE GA4+ you can simply open the administration sidebar and select Control Panel > Configuration > System Settings > Foundation > JavaScript Loader > Uncheck Expose Global. If you aren't using one of the above Liferay versions, you need to follow the advice of 已修复的问题。或者,您可以通过手动编辑 JS 文件来解决此问题。更改 /common/js/sockjs.js
中的任何文本,例如:
typeof define == 'function'
收件人:
false && typeof define == 'function'
这将阻止文件被 Liferay 的 AMD 加载程序加载。
stiemannkj1 是对的。
但如果您不想接触 js 库(可能是 CDN)的代码,也不想更改配置,您可以执行以下操作(如果您担心多个站点和 portlet 可能会影响此行为)。
<script>
Liferay.Loader.define._amd = Liferay.Loader.define.amd;
Liferay.Loader.define.amd = false;
</script>
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script>
<script>
Liferay.Loader.define.amd = Liferay.Loader.define._amd;
</script>
如果此代码不起作用,请尝试此代码。
<script>
define._amd = define.amd;
define.amd = false;
</script>
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script>
<script>
define.amd = define._amd;
</script>
我正尝试在我的 liferay 7 portlet 中包含 sockjs (v1.1.2),但我收到此警告:
Mismatched anonymous define() module: function ()...
然后库未加载。
我直接将 .js 文件包含在我的 liferay-portlet.xml 中,如下所示:
<header-portlet-javascript>/common/js/sockjs.js</header-portlet-javascript>
我不知道如何让它发挥作用
看起来您 运行 遇到了 LPS-68298. If you are using Liferay 7.0 DXP SP2+ or Liferay 7.0 CE GA4+ you can simply open the administration sidebar and select Control Panel > Configuration > System Settings > Foundation > JavaScript Loader > Uncheck Expose Global. If you aren't using one of the above Liferay versions, you need to follow the advice of /common/js/sockjs.js
中的任何文本,例如:
typeof define == 'function'
收件人:
false && typeof define == 'function'
这将阻止文件被 Liferay 的 AMD 加载程序加载。
stiemannkj1 是对的。
但如果您不想接触 js 库(可能是 CDN)的代码,也不想更改配置,您可以执行以下操作(如果您担心多个站点和 portlet 可能会影响此行为)。
<script>
Liferay.Loader.define._amd = Liferay.Loader.define.amd;
Liferay.Loader.define.amd = false;
</script>
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script>
<script>
Liferay.Loader.define.amd = Liferay.Loader.define._amd;
</script>
如果此代码不起作用,请尝试此代码。
<script>
define._amd = define.amd;
define.amd = false;
</script>
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script>
<script>
define.amd = define._amd;
</script>