【问题标题】:Angular CLI Error角 CLI 错误
【发布时间】:2018-03-15 02:25:04
【问题描述】:

如果我想让 ng 服务,我会收到此错误:

TypeError 中的错误:无法读取未定义的属性“提供” 在 C:\Users\Samir\Documents\AngularProjects\test\angular_website\node_modules\@angular\compiler-cli\src\ngtools_impl.js:150:14 在 Array.reduce (本机) 在 _collectRoutes (C:\Users\Samir\Documents\AngularProjects\test\angular_website\node_modules\@angular\compiler-cli\src\ngtools_impl.js:149:22) 在 _extractLazyRoutesFromStaticModule (C:\Users\Samir\Documents\AngularProjects\test\angular_website\node_modules\@angular\compiler-cli\src\ngtools_impl.js:113:8) 在 Object.listLazyRoutesOfModule (C:\Users\Samir\Documents\AngularProjects\test\angular_website\node_modules\@angular\compiler-cli\src\ngtools_impl.js:53:22) 在 Function.NgTools_InternalApi_NG_2.listLazyRoutes (C:\Users\Samir\Documents\AngularProjects\test\angular_website\node_modules\@angular\compiler-cli\src\ngtools_api.js:91:39) 在 AotPlugin._getLazyRoutesFromNgtools (C:\Users\Samir\Documents\AngularProjects\test\angular_website\node_modules\@ngtools\webpack\src\plugin.js:207:44) 在 _donePromise.Promise.resolve.then.then.then.then.then (C:\Users\Samir\Documents\AngularProjects\test\angular_website\node_modules\@ngtools\webpack\src\plugin.js:443:24)

我还删除了所有 node_modules 并安装了最新版本的 cli, 但这不是我的代码。有人解决这个问题吗?

【问题讨论】:

    标签: angular


    【解决方案1】:

    此错误通常来自服务的导入语句。您应该尝试使用服务本身的确切路径导入服务,而不是使用导出服务的 index.ts 文件。

    代替

    使用 index.ts 文件:

    export * from './services/myservice.service';
    

    然后在提供该服务的模块/组件中,您将导入写入 index.ts 文件,如下所示:

    import {MyService} from './services';
    

    试试这个

    尝试使用服务本身的相对路径导入服务:

    import {myService} from './services/myservice.service';
    

    【讨论】:

    • 你确定吗?这是 onyl ng_modules,不是我的代码
    • 这是我遇到的错误,是什么为我解决了它。您的应用中有任何服务吗?
    • 如果你没有代码,我会建议你尝试升级你的 angular-cli。请遵循以下说明:github.com/angular/angular-cli#updating-angular-cli
    • 这对我有用。我想知道为什么这两种导入方法之间存在差异。从逻辑上讲,它们应该是相同的。这似乎是 Angular 中的一个错误。
    【解决方案2】:

    app.module.ts,你是否使用了这样的导入:

    import MyImport from 'myPath';
    

    ? 如果是,您需要更改您的 MyImport.ts 以像这样导入:

    import { MyImport } from 'myPath';
    

    【讨论】:

      【解决方案3】:

      问题是由@Injectable() 引起的。在 Angular 11 之前,需要添加 @Injectable 以在服务中注入服务。

      在 Angular 11 和未来版本中,@Injectable() 需要添加到所有定义的服务中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-08
        • 2018-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-29
        • 2017-05-12
        相关资源
        最近更新 更多