Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Как с помощью AMD (require) запросить модуль с относительным адресом? (https://javascript.ru/forum/offtopic/57983-kak-s-pomoshhyu-amd-require-zaprosit-modul-s-otnositelnym-adresom.html)

FINoM 28.08.2015 21:44

Как с помощью AMD (require) запросить модуль с относительным адресом?
 
Скажем. у меня есть некая библиотека, которая тягается из проекта в проект. Периодически меняется положение библиотеки относительно главного вызова require. Проблема в том, что модули, запрашиваемые другими модулями библиотеки используют относительный путь , относительно файла (сорри за тавтологию), вызвавшего require.

Попробую прояснить на примере:
Код:

/index.js - файл, который запрашивает библиотеку
/my-lib/main.js - файл библиотеки
/my-lib/submodule.js - некий вспомогательный файл запрашиваемый библиотекой


В index.js я вызываю:
require(['my-lib/main'], function() {...});


В my-lib/main.js вызываю:
define(['./submodule'], function() {...});


Но requirejs пытается найти submodule в папке, в которой лежит index.js, выдавая, конечно же, 404.

Вновь костылить, жонглируя с paths (что я успешно делаю около года из-за отсутствия относительных путей) не допустимо в данном случае. Как эту проблему решить?

Vlasenko Fedor 28.08.2015 23:46

А если так
require(__dirname + '/submodule');

devote 29.08.2015 11:08

Цитата:

Сообщение от FINoM
Как эту проблему решить?

А почему ты не используешь настройки requirejs?

например:
require.config({
  baseUrl: '.', // тут возможно я не прав, поправь если надо
  paths: {
    'main': 'my-lib/main',
    'submodule': 'my-lib/submodule'
  }
});

// далее везде вызываешь:
require(['main'], function() {...});
define(['submodule'], function() {...});
ну и т.д.

FINoM 29.08.2015 11:12

devote,
Цитата:

Сообщение от FINoM
Вновь костылить, жонглируя с paths (что я успешно делаю около года из-за отсутствия относительных путей) не допустимо в данном случае. Как эту проблему решить?


devote 29.08.2015 11:15

FINoM,
оу.. да похоже я еще не проснулся))) Но без жанглирования увы никак.


Часовой пояс GMT +3, время: 16:18.