requirejs data-main加载总是失败的问题

在使用requirejs时遇到data-main加载脚本路径错误的问题,原因是data-main路径相对于baseUrl,而requireConfig.js未确保先加载。通过将requireConfig.js直接放入html,或者采用不优雅的解决方式来避免404错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚刚开始接触requirejs,在使用过程中发现了一个问题

<script data-main="/registerMain.js" src="/print/web/public/plugins/require.js"></script>
<script src="/print/web/public/plugins/requireConfig.js"></script>


我一开始用上面的方式来加载脚本模块


因为requirejs使用data-main的方式来加载入口模块,但是这个data-main脚本路径是相对于自定义配置的baseUrl的,我把配置baseUrl的文件抽取出去了,独立成了一个requireConfig.js,在script加载的时候,没有办法保证requirejs内部开始加载data-main模块时候requireConfig脚本已经被加载完成,所以就会经常有下图所示的问题,data-main文件总是报404



后来研究了一下新浪微博的解决方式,发现他们是这么来的

    //noinspection JSUnresolvedVariable
    require.config({
        baseUrl: 'http://h5.sinaimg.cn/weibocn/v6/js/',
        paths: {
            'jquery': 'http://h5.sinaimg.cn/weibocn/v6/js/lib/jquery2-3a24ecb46cb1716600660086a85ad0b0.js',
            'card/cards': 'http://h5.sinaimg.cn/weibocn/v6/js/card/cards-e0518abc72cc7f1a067220b4d8fd2d4e.js',
            'act/acts': 'http://h5.sinaimg.cn/weibocn/v6/js/act/acts-e6f88f617cbab657bbc09d202e91c23c.js',
            'tpl/mod/mods.all': 'http://h5.sinaimg.cn/weibocn/v6/js/tpl/mod/mods.all-baa8aa348c8f1d67a4f598567ef08f83.js',
            'mod/mods.all': 'http://h5.sinaimg.cn/weibocn/v6/js/mod/mods.all-7355ca37ddb6c1be526292ea6b441ec5.js',
            'ctrl/home': 'http://h5.sinaimg.cn/weibocn/v6/js/ctrl/home-1fe91b48de79da46920de8d6624260f6.js'
        }
    });


直接写在页面上~


好吧,折中一下

<script data-main="/registerMain.js" src="/print/web/public/plugins/require.js"></script>
    <script>
    	requirejs.config({
		    baseUrl: '/print/web/public/src/js'
		});
    </script>
    <script src="/print/web/public/plugins/requireConfig.js"></script>



用了这个方法算是非常不优雅的解决了这个问题。。。



记录一下这个坑,防止到时候自己忘记了`


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值