【问题标题】:Can't resolve dependency for module function (restangular.IProvider)无法解决模块功能的依赖关系(restangular.IProvider)
【发布时间】:2015-03-16 14:28:44
【问题描述】:

我正在尝试为 SPA 项目设置 restangular,但我无法使用 grunt-tsng 将其作为依赖项解决。我已经使用 bower 安装了它(和 tsd 用于来自 absoluteTyped 的打字稿定义)。

grunt 任务配置

tsng: {
        options: {
            extension: ".ng.ts"
        },
        dev: {
            files: [
                // TODO: Automate the generation of this config based on convention
                {
                    src: ["Client/app/**/*.ts", "!**/*.ng.ts"],
                    dest: "Client/app"
                }
            ]
        }
    },

模块 app.ts

/// <reference path="../../typings/tsd.d.ts" />

module App {

    var dependencies = [
        "ui.router",
        "ui.bootstrap",
        "restangular"
        ...
    ];

    function configuration(
        $stateProvider: ng.ui.IStateProvider,
        $urlRouterProvider: ng.ui.IUrlRouterProvider,
        RestangularProvider: restangular.IProvider, <-- here it fails
        ...

ts.d.ts(参考文件)

/// <reference path="restangular/restangular.d.ts" />

咕哝错误

Running "tsng:dev" (tsng) task
Warning: Error: Can't resolve dependency for module function App.config with name restangular.IProvider Use --force to continue.

ui-routerui-bootstrap 等其他依赖项工作正常。这可能是什么原因?是否存在与 grunt-tsng 已知的不兼容问题?

【问题讨论】:

    标签: angularjs gruntjs typescript bower restangular


    【解决方案1】:

    好吧,我想通了。

    执行 grunt-tsng 时,它会扫描所有依赖项/模块等,以自动将它们挂钩到 Angular 中,这样您就不必自己动手了。这里有两个简单的规则:你自己的注入依赖项(例如,你有打字稿实现代码的地方,比如你的模块中的类)可以简单地用它们的名字来定义。例如:

    constructor(service: MyModule.IMyService) {}
    

    外部依赖,例如from angular 本身是用 '$' 表示法声明的。 grunt-tsng 将假定它们的依赖项本身在运行时已解决,因此只需将它们与它们的名称挂钩:

    constructor($routeProvider: ng.IRouteService) {}
    

    但现在restangular 中的服务不再命名为“$restangular”,而只是命名为“restangular”。这导致以下结果:

    • 当将其声明为“restangular”时,grunt-tsng 将在您的模块中查找实现,但找不到任何实现并失败
    • 当将其声明为“$restangular”时,angular 将查找名为“$restangular”的提供程序,但未找到并失败

    结论:

    这是迟钝的。

    【讨论】:

    • 您的结论为我赢得了 +1。约定优于配置
    猜你喜欢
    • 1970-01-01
    • 2014-03-02
    • 2016-02-16
    • 2017-02-20
    • 2019-11-17
    相关资源
    最近更新 更多