2013-12-24 4 views
0

Я новичок в RequireJS и пытаюсь его использовать. Я следовал примеру в документах RequireJS, но есть некоторые проблемы. Я могу загрузить jquery, но не app/shell.RequireJS пути не работают

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 Console Ошибки

"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 Экспресс Консоль ошибок

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

+0

'GET http: // localhost: 3000/javascripts/app ../ default.htmshell.js 404 (не найдено) require.js: 34 Ошибка при отсутствии: Ошибка скрипта для: app/shell http: // requirejs.org/docs/errors.html#scripterror'.Errors от инспектора хрома. – user2522545

+1

Было бы лучше добавить этот вывод к вашему вопросу и отформатировать его так, чтобы разрывы строк соответствовали тем, которые вы получаете на консоли. В том, что мне удалось прочитать из того, что вы публикуете в своем комментарии, я вижу строку '' ../ default.html'', которая кажется совершенно случайной и не объяснима из того, что вы указали в вопросе. – Louis

+0

Я добавил ошибки с веб-консоли и консоли сервера Express. – user2522545

ответ

0

Поскольку у вас несколько уровней папок, вам необходимо установить baseUrl в качестве корня вашего приложения. Если вы хотите использовать require(['jquery']) вместо require(['libs/jquery']), вы должны указать его «алиас» в своей конфигурации.

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

Я знаю это сэр. Я хочу настроить пути к папке, а не JS-файлу. Так жаль моего бедного английского. – user2522545

+0

Нет проблем! Я скопировал/вставил свой код на свой локальный компьютер с вашей точной структурой папок и смог заставить его работать без каких-либо проблем в файловой системе и на локальном хосте. Я использовал jquery 1.10.2 и требовал 2.1.9. –

+0

Я использовал тот же jquery и требую версию, но не работаю для меня. Я использовал Node.js и Express для сервера. Может ли проблема вызвать файловая система ?. – user2522545

-1

Попробуйте добавить main.js файл явно после requirejs тег сценария:

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

Это позволит загрузить файл конфигурации синхронно после загрузки requirejs таким образом, убедившись, что пути установлены, прежде чем модуль называется , Надеюсь, это поможет.

Смежные вопросы