如何让TYJ3 BE正确解析NameJS命名空间?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让TYJ3 BE正确解析NameJS命名空间?相关的知识,希望对你有一定的参考价值。

我想在TYPO3后端加载额外的JS。我在the official documentation中使用requireJS。

在ext_localconf.php中我试图像这样加载我的JS:

if (TYPO3_MODE=="BE" )   {
    $pageRenderer = TYPO3CMSCoreUtilityGeneralUtility::makeInstance(TYPO3CMSCorePagePageRenderer::class);
    $pageRenderer->loadRequireJsModule('TYPO3/CMS/ExtensionName/EventEndDateValidator');
}

在我的浏览器控制台中,我收到如下错误:

错误:“TYPO3 / CMS / ExtensionName / EventEndDateValidator”http://requirejs.org/docs/errors.html#scripterror的脚本错误

加载源“http://localhost/typo3/TYPO3/CMS/ExtensionName/EventEndDateValidator.js?bust=6b9250465c29da98dea71ea9e447e7db2d3ccea3”失败。 index.php文件:1

所以名称空间没有解决。 The docs@DAM说,将JS文件放在EXT:extension_name/Resources/Public/javascript目录中就足够了。

我的JS文件是这样的:

define(['jquery'], function($) {
    var EventEndDateValidator = {
        sayings: [
            'The quick brown fox jumps over the lazy dog',
            'Bright vixens jump; dozy fowl quack'
        ]
    };

    EventEndDateValidator.say = function() {
        alert(EventEndDateValidator.sayings[Math.floor(Math.random() * EventEndDateValidator.sayings.length)]);
    };

    $(document).ready(function() {
        // Initialize the view
        EventEndDateValidator.say();
    });
});

我错过了什么吗?

答案

为了澄清你写的一件事,你要用你自己的扩展名替换ExtensionName - 不确定你是否这样做:

假设你的扩展名有密钥wonderful_extension,那么这个名字通常是WonderfulExtension

然后在文件ext_localconf.php中你要这样写:

if (TYPO3_MODE=="BE" )   {
    $pageRenderer = TYPO3CMSCoreUtilityGeneralUtility::makeInstance(TYPO3CMSCorePagePageRenderer::class);
    $pageRenderer->loadRequireJsModule('TYPO3/CMS/WonderfulExtension/EventEndDateValidator');
}

根据您目前使用的代码,扩展键必须是extension_name,名称为ExtensionName,可能真的使用这些字符串是不合理的。在文档中,它们将被视为要用您自己的值替换的变量。

以上是关于如何让TYJ3 BE正确解析NameJS命名空间?的主要内容,如果未能解决你的问题,请参考以下文章

Webpack 无法正确解析我的别名

如何在其他网络命名空间中的子进程与父进程之间正确通信?

C++:命名空间——如何在头文件和源文件中正确使用?

从 BE 注销后,我注册的命名空间停止工作

如何在 C++ 中正确使用命名空间?

如何获取另一个 XML 命名空间值?