webjars / angular-tree-control

1 stars 1 forks source link

upgraded to angular-tree-control webjar 0.1.5-1, but RequireJS still doesn't find it #1

Closed benjamingeer closed 10 years ago

benjamingeer commented 10 years ago

As instructed in webjars issue 372, I've upgraded to angular-tree-control webjar 0.1.5-1 and added webjars-locator to my build.sbt:

libraryDependencies ++= Seq(
  "org.webjars" %% "webjars-play" % "2.2.1-2",
  "org.webjars" % "webjars-locator" % "0.14",
  "org.webjars" % "angular-tree-control" % "0.1.5-1",
  /* ... */
)

My RequireJS dependency is 'angular-tree-control', which should cause RequireJS to load angular-tree-control.js from the webjar, but Firebug shows that RequireJS is still trying to load this URL and getting a 404 error:

http://localhost:9000/js/angular-tree-control.js

This URL works when I open it manually in the browser:

http://localhost:9000/webjars/angular-tree-control/0.1.5/angular-tree-control.js

All the other webjars I'm using are working fine with RequireJS.

jamesward commented 10 years ago

Can you post your RequireJS setup script?

benjamingeer commented 10 years ago

OK, here you go. It's based on the one in the angular-seed-play project. In the head tag in my index.scala.html, I have:

  @Html(org.webjars.play.RequireJS.setup("js/app"))

And this is js/app.js:

/*global define, angular */

'use strict';

require(['angular',
    './controllers',
    './directives',
    './filters',
    './services',
    './ng-tags-input',
    'ui-bootstrap-tpls',
    'underscorejs',
    'angular-route',
    'angular-resource',
    /*
     * The following line should load angular-tree-control.js from the webjar, but it doesn't.
     */
    'angular-tree-control'
  ],
  function(angular, controllers) {
    var ontologyEditor = angular.module('ontologyEditor',
      ['ontologyEditor.filters', 'ontologyEditor.services', 'ontologyEditor.directives', 'ngTagsInput', 'treeControl', 'ui.bootstrap', 'ngRoute']).
      config(['$routeProvider', function($routeProvider) {
        $routeProvider.when('/home', { templateUrl: 'partials/default.html', controller: controllers.DefaultAngularController });
        $routeProvider.when('/ontology', { templateUrl: 'partials/ontology-editor.html', controller: controllers.OntologyAngularController });
        $routeProvider.otherwise({ redirectTo: '/home' });
      }]);

    ontologyEditor.controller('TabController', ['$scope', '$location', controllers.TabController]);

    angular.bootstrap(document, ['ontologyEditor']);
  }
);
jamesward commented 10 years ago

Sorry for not being more clear... I need the output of @Html(org.webjars.play.RequireJS.setup("js/app")) (like from view-source).

benjamingeer commented 10 years ago

No problem:

    <script>
    // this stuff must be done before require.js is loaded
    var webjars = {
    versions: {"angular-tree-control":"0.1.5","bootstrap":"3.1.1","angularjs":"1.3.0-beta.7","underscorejs":"1.6.0","angular-ui-bootstrap":"0.11.0","requirejs":"2.1.10","jquery":"1.9.0"},
    path: function(webJarId, path) {
        console.error('The webjars.path() method of getting a WebJar path has been deprecated.  The RequireJS config in the ' + webJarId + ' WebJar may need to be updated.  Please file an issue: http://github.com/webjars/' + webJarId + '/issues/new');
        return ['/webjars/' + webJarId + '/' + webjars.versions[webJarId] + '/' + path];
    }
};

var require = {
    callback: function() {
        // Deprecated WebJars RequireJS plugin loader
        define('webjars', function() {
            return {
                load: function(name, req, onload, config) {
                    if (name.indexOf('.js') >= 0) {
                        console.warn('Detected a legacy file name (' + name + ') as the thing to load.  Loading via file name is no longer supported so the .js will be dropped in an effort to resolve the module name instead.');
                        name = name.replace('.js', '');
                    }
                    console.error('The webjars plugin loader (e.g. webjars!' + name + ') has been deprecated.  The RequireJS config in the ' + name + ' WebJar may need to be updated.  Please file an issue: http://github.com/webjars/webjars/issues/new');
                    req([name], function() {;
                        onload();
                    });
                }
            }
        });

        // All of the WebJar configs

requirejs.config({"paths":{"bootstrap":["/webjars/bootstrap/3.1.1/js/bootstrap","js/bootstrap"],"bootstrap-css":["/webjars/bootstrap/3.1.1/css/bootstrap","css/bootstrap"]},"shim":{"bootstrap":["jquery"]}})
// WebJar config for angularjs
var webjarsAngularjsChildren = [
    'angular-animate',
    'angular-cookies',
    'angular-loader',
    'angular-mocks',
    'angular-resource',
    'angular-route',
    'angular-sanitize',
    'angular-scenario',
    'angular-touch',
    'angular-locale_en-in',
    'angular-locale_sk-sk',
    'angular-locale_en-dsrt-us',
    'angular-locale_cs-cz',
    'angular-locale_pt-pt',
    'angular-locale_ml-in',
    'angular-locale_ro-ro',
    'angular-locale_sr',
    'angular-locale_en-ie',
    'angular-locale_hr',
    'angular-locale_ko',
    'angular-locale_sw-tz',
    'angular-locale_de-ch',
    'angular-locale_ja',
    'angular-locale_sq-al',
    'angular-locale_ln',
    'angular-locale_zh-cn',
    'angular-locale_en-zz',
    'angular-locale_en-sg',
    'angular-locale_kn',
    'angular-locale_mr-in',
    'angular-locale_mr',
    'angular-locale_fil-ph',
    'angular-locale_zh-hans',
    'angular-locale_am',
    'angular-locale_he-il',
    'angular-locale_gl',
    'angular-locale_en',
    'angular-locale_en-mh',
    'angular-locale_hi',
    'angular-locale_ro',
    'angular-locale_pt',
    'angular-locale_hu',
    'angular-locale_sl-si',
    'angular-locale_fr-ca',
    'angular-locale_fil',
    'angular-locale_it',
    'angular-locale_fr-bl',
    'angular-locale_fr-gp',
    'angular-locale_ms',
    'angular-locale_sv-se',
    'angular-locale_it-it',
    'angular-locale_sr-latn-rs',
    'angular-locale_ar-eg',
    'angular-locale_en-vi',
    'angular-locale_vi-vn',
    'angular-locale_ja-jp',
    'angular-locale_ta',
    'angular-locale_en-iso',
    'angular-locale_en-gu',
    'angular-locale_eu-es',
    'angular-locale_no',
    'angular-locale_hu-hu',
    'angular-locale_fr-mf',
    'angular-locale_en-um',
    'angular-locale_gl-es',
    'angular-locale_pl',
    'angular-locale_nl-nl',
    'angular-locale_et',
    'angular-locale_de-lu',
    'angular-locale_da',
    'angular-locale_zh',
    'angular-locale_tr-tr',
    'angular-locale_am-et',
    'angular-locale_te-in',
    'angular-locale_hi-in',
    'angular-locale_et-ee',
    'angular-locale_tr',
    'angular-locale_sk',
    'angular-locale_sr-rs',
    'angular-locale_lv',
    'angular-locale_fa-ir',
    'angular-locale_sl',
    'angular-locale_el-gr',
    'angular-locale_bn-bd',
    'angular-locale_lt-lt',
    'angular-locale_sq',
    'angular-locale_fr-mq',
    'angular-locale_ms-my',
    'angular-locale_id',
    'angular-locale_bn',
    'angular-locale_hr-hr',
    'angular-locale_fr-mc',
    'angular-locale_id-id',
    'angular-locale_es',
    'angular-locale_es-es',
    'angular-locale_cs',
    'angular-locale_zh-hans-cn',
    'angular-locale_fr',
    'angular-locale_th-th',
    'angular-locale_te',
    'angular-locale_fa',
    'angular-locale_kn-in',
    'angular-locale_or',
    'angular-locale_pt-br',
    'angular-locale_zh-hk',
    'angular-locale_gu',
    'angular-locale_en-au',
    'angular-locale_is-is',
    'angular-locale_en-gb',
    'angular-locale_ln-cd',
    'angular-locale_mo',
    'angular-locale_sw',
    'angular-locale_tl',
    'angular-locale_mt',
    'angular-locale_vi',
    'angular-locale_de',
    'angular-locale_mt-mt',
    'angular-locale_pl-pl',
    'angular-locale_uk-ua',
    'angular-locale_gsw-ch',
    'angular-locale_ca',
    'angular-locale_tl-ph',
    'angular-locale_da-dk',
    'angular-locale_ca-es',
    'angular-locale_bg-bg',
    'angular-locale_nl',
    'angular-locale_or-in',
    'angular-locale_gu-in',
    'angular-locale_zh-tw',
    'angular-locale_bg',
    'angular-locale_is',
    'angular-locale_eu',
    'angular-locale_el-polyton',
    'angular-locale_fr-re',
    'angular-locale_sr-cyrl-rs',
    'angular-locale_lt',
    'angular-locale_sv',
    'angular-locale_en-za',
    'angular-locale_ur-pk',
    'angular-locale_fi',
    'angular-locale_he',
    'angular-locale_en-mp',
    'angular-locale_ru-ru',
    'angular-locale_de-at',
    'angular-locale_en-as',
    'angular-locale_gsw',
    'angular-locale_ko-kr',
    'angular-locale_de-de',
    'angular-locale_ru',
    'angular-locale_iw',
    'angular-locale_uk',
    'angular-locale_in',
    'angular-locale_en-dsrt',
    'angular-locale_el',
    'angular-locale_en-us',
    'angular-locale_fi-fi',
    'angular-locale_ar',
    'angular-locale_de-be',
    'angular-locale_th',
    'angular-locale_ta-in',
    'angular-locale_ml',
    'angular-locale_lv-lv',
    'angular-locale_ur',
    'angular-locale_fr-fr' ];

var webjarsAngularjsPaths = { "angular": webjars.path("angularjs", "angular") };

var webjarsAngularjsShim = { "angular": {"exports" : "angular"} };

webjarsAngularjsChildren.forEach(function(child) {
    webjarsAngularjsPaths[child] = webjars.path("angularjs", child);
    webjarsAngularjsShim[child] = ["angular", "webjars!angular.js"];
});

requirejs.config({
    paths: webjarsAngularjsPaths,
    shim: webjarsAngularjsShim
});

// WebJar config for underscorejs
requirejs.config({
    paths: { "underscorejs": webjars.path("underscorejs", "underscore") },
    shim: { "underscorejs": { "exports": "_" } }
});

// WebJar config for angular-ui-bootstrap
requirejs.config({
    paths: {
        'ui-bootstrap': webjars.path('angular-ui-bootstrap', 'ui-bootstrap'),
        'ui-bootstrap-tpls': webjars.path('angular-ui-bootstrap', 'ui-bootstrap-tpls')
    },
    shim: {
        'ui-bootstrap': [ 'angular' ],
        'ui-bootstrap-tpls': [ 'angular' ]
    }
});

    }
}
</script>
jamesward commented 10 years ago

The RequireJS config was broken. I've fixed it and am releasing 0.1.5-2. Sorry about the hassle.

benjamingeer commented 10 years ago

It works now, thanks!