【问题标题】:AngularJS RequireJS loading angular-file-uploadAngularJS RequireJS 加载 angular-file-upload
【发布时间】:2014-03-31 23:24:15
【问题描述】:

我很难将angular-file-upload 模块加载到我的应用程序中。我一直在阅读各种教程、示例、问题等。你们能帮我弄清楚我在这里做错了什么吗?

我收到以下错误消息:Failed to instantiate module angular-file-upload

这是我的代码

mymodule/module.js

define(['angular', 'angular.file.upload'], function (angular) {
'use strict';
    return angular.module('app.mymodule', ['angularFileUpload']);
});

mymodule/index.js

define([
'./routes',
'./models/index',
'./controllers/index',
'./directives/index'
], function () {});

app.js

define([
    'angular', 
    'angular.resource', 
    'angular.ui.bootstrap', 
    'angular.ui.router', 
    './relation/index', 
    './controllers/index', 
    './directives/index', 
    'config'
], function (angular) {
    'use strict';    
    return angular.module('app', [
        'ngResource',
        'ui.bootstrap',
        'ui.router',
        'app.relation',
        'app.controllers',
        'app.directives',
        'app.constants'
    ]);
});

ma​​in.js

require.config({
    paths: {
        'angular': '../lib/angular/angular',
        'angular.route': '../lib/angular-route/angular-route',
        'angular.resource': '../lib/angular-resource/angular-resource',
        'angular.ui.bootstrap': '../lib/angular-bootstrap/ui-bootstrap-tpls',
        'angular.ui.router': '../lib/angular-ui-router/angular-ui-router',
        'angular.file.upload': '../lib/angular-file-upload/angular-file-upload',
        ...
    },

    shim: {
        'angular': {'exports': 'angular'},  
        'angular.resource': ['angular'],
        'angular.ui.bootstrap': ['angular'],
        'angular.ui.router': ['angular'],
        'sails.io' : ['socket.io']
    }
});

require([
  'angular',
  'app',
  'config',
  'routes'
], function(angular) {
    'use strict';

    angular.element().ready(function() {
      angular.bootstrap(document, ['app']);
    });
  }
);

【问题讨论】:

    标签: javascript angularjs requirejs sails.js


    【解决方案1】:

    如果您查看source code for angular-file-upload,您会发现它没有将自己注册为 AMD 模块,这意味着我们必须提供一个 shim,以确保它的所有依赖项都在之前加载我们加载 angular-file-upload 本身。

    主要的依赖当然是angular——所以我们需要设置一个shim来确保angularangular-file-upload之前被加载。在你的情况下,我猜 requirejs 配置应该是这样的:

    require.config({
        paths: {
            "angular"             : "relative/path/to/angular",
            "angular.file.upload" : "relative/path/to/angular-file-upload",
            ... other modules
        },
        shim: {
            "angular": {
                exports: "angular"
            },
            "angular.file.upload": ["angular"]
        }
    })
    

    那么你应该准备好摇滚了。

    【讨论】:

    • 我也遇到了类似的问题,即引发了“角度未定义”。我将 Angular 的垫片更改为导出,它起作用了。你能解释一下这是做什么的,为什么只是 "angular.file.upload": ["angular"] 不起作用? “角度”:{出口:“角度”}
    【解决方案2】:

    如果它是我使用的同一个库,你可能想要注入 angularFileUpload 而不是 angular-file-upload

    【讨论】:

    • 你可能没有帮助@Frank6,但你帮助了我。谢谢!
    • 我很想知道它有什么帮助?
    猜你喜欢
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    相关资源
    最近更新 更多