RequireJS路径不起作用

时间:2013-12-24 13:30:50

标签: javascript requirejs

我是RequireJS的新手,并尝试使用它。我在RequireJS文档中跟踪了一个示例,但是存在一些问题。我可以加载jquery但不能加载app/shell

Root
 |__index.html
 |__javascripts
     |__main.js
     |__libs
     |    |__jquery.js
     |    |__require.js
     |__app
         |__shell.js

的index.html

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script data-main="javascripts/main.js" src="javascripts/libs/require.js"></script>
</head>
<body>

</body>
</html>

main.js

requirejs.config({
    baseUrl:'javascripts/libs',
    paths:{
            app:'../app'
        }
    });
require(['jquery','app/shell'],function($,shell){
    if($ && shell){
        console.info('Scripts loaded');
    }
});

shell.js

define(function(){
    "use strict";
    return{
        initModule:function(){
            console.info('Module init');
        }
    }
});

Web控制台错误

"NetworkError: 404 Not Found - http://localhost:3000/javascripts/app../default.htmshell.js"


Error: Script error for: app/shell http://requirejs.org/docs/errors.html#scripterror

Node.js Express控制台错误

GET /javascripts/app../default.htmshell.js 404

2 个答案:

答案 0 :(得分:0)

由于您有多个文件夹级别,因此必须将baseUrl设置为应用程序的根目录。如果要使用require(['jquery'])而不是require(['libs/jquery']),则必须在配置中指定它的“别名”。

requirejs.config({
    baseUrl:'javascripts',
    paths:{
            jquery: 'libs/jquery'
        }
    });

答案 1 :(得分:-2)

尝试在requirejs脚本标记后显式添加main.js文件:

<script src="javascripts/libs/require.js"></script>
<script src="javascripts/main.js"></script>

这将在加载requirejs后同步加载配置文件,从而确保在调用模块之前设置路径。 希望它有所帮助。