2013-08-11 2 views
1

У меня возникают проблемы с requirejs и относительными путями.RequireJS не соблюдает относительные пути, если не загружен на «mysite.com/»

Это в моем HTML-файл:

<script data-main="/app/main.js" src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.1/require.js"></script> 

Мой конфиг настроен следующим образом:

requirejs.config({ 
    baseUrl: '/vendor', 
    paths: { 
     // APP FILES 
     'app-base' : '../app', 
     'app-config' : '../config', 
     models  : '../models', // where the models and collections are 
     templates : '../templates', 
     views  : '../views', 
     lib   : '../lib', 
     tasks  : '../tasks', 
     router  : '../app/router', 

     // VENDOR FILES 
     marionette : 'backbone.marionette', 
    }, 
    deps: ['router'], 
    shim: {...} 
}); 

Когда мое приложение загружает из URL "локальный: 3000 /" или «локальный: 3000/приложения "все эти пути разрешаются правильно. Но когда он загружается из чего-то вроде «localhost: 3000/applications/app1», пути исправляются некорректно.

Пути выглядят так, соответственно.

Правильно:

"/models/test-model.js"

Неправильно:

"/applications/models/test-model.js"

Я загружаю свои модули с использованием CJS следующим образом:

define(function(require) { 
    var TestModel = require('models/test-model.js'); 
}); 

Когда я меняю вышеуказанное на это ->var TestModel = require('/models/test-model.js');, он работает. Но это побеждает цель использования относительных путей.

Было бы очень приятно, если бы кто-нибудь мог мне помочь. Я смущен.

ответ

2

При необходимости использования модуля обязательно оставьте расширение .js, если вы не указали полный путь.

+1

Похоже, мне пришлось снять «.js». Даже не понимал, что это было. Благодаря! – vernak2539

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