RequireJs路径和404脚本

问题描述 投票:0回答:1

以下代码有什么问题

索引.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width= , initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <script data-main="js/config" src="require.js"></script>
        <script >
            require(['underscore'],function(_) {
                console.log('Underscore Js Loaded');  
            });
        </script>
    </body>
</html>  

jsconfig.js

require.config({
    baseUrl: 'js',
    paths:{
        module1:"module1" ,
        underscore:"underscore-min"        
    }
});

我得到404脚本未找到,脚本的位置被设置为------。

"{{url}}"js/underscore.js

预期的URL应该是

"{{url}}"js/underscore-min.js

还有什么需要添加到配置中的吗? 这里有什么问题?

requirejs
1个回答
0
投票
  1. 你加载 require.js 在浏览器中
  2. RequireJs寻找带有 data-main 属性
  3. 脚本被发现,所以它需要 js/config 异步
  4. 下一个脚本试图要求 underscore 模块
  5. 要求仍在加载 js/config 所以它还不知道你要映射到 underscoreunderscore-min
  6. 它试图加载常规的 underscore.js
  7. 由于服务器的响应是404,浏览器无法加载。

这是你的问题:)

如何解决这个问题?

有两个解决方案。

首先是要求 underscore 通过 depscallback 的配置中。

require.config({
    baseUrl: 'js',
    paths:{
        module1:"module1" ,
        underscore:"underscore-min"        
    },
    deps: ['underscore'],
    callback: function (underscore) {
        console.log('Underscore Js Loaded');
    }
});

其次是在HTML中内联你的配置。

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width= , initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <script src="require.js"></script>
        <script>
            require.config({
                baseUrl: 'js',
                paths: {
                    module1:"module1" ,
                    underscore:"underscore-min"        
                }
            });
            require(['underscore'],function(_) {
                console.log('Underscore Js Loaded');  
            });
        </script>
    </body>
</html>  
© www.soinside.com 2019 - 2024. All rights reserved.