【问题标题】:TypeScript and ng2 rc.1 getting Error:(20, 15) TS2304: Cannot find name 'module'TypeScript 和 ng2 rc.1 出现错误:(20、15)TS2304:找不到名称“模块”
【发布时间】:2016-09-02 18:17:03
【问题描述】:

TypeScript 和 ng2 rc.1 出现错误:(20, 15) TS2304: 找不到名称“模块”。

当尝试使用模块指令时

@Component({
    selector: 'Notes1',
    moduleId: module.id,
    directives: [ModalDialog, FORM_DIRECTIVES, DisplayError],
    templateUrl: 'Notes1.html',
    styleUrls: ['Notes1.css']
})

知道如何修复 TS 错误。在运行时一切正常

问候

肖恩

【问题讨论】:

    标签: typescript angular


    【解决方案1】:

    错误意味着 TypeScript 编译器不知道 module 是什么。快速修复:

    declare var require: any;
    

    为使其更完整,请使用来自DefinitelyTyped/node 的定义:

    interface NodeRequireFunction {
        (id: string): any;
    }
    
    interface NodeRequire extends NodeRequireFunction {
        resolve(id:string): string;
        cache: any;
        extensions: any;
        main: any;
    }
    
    declare var require: NodeRequire;
    
    interface NodeModule {
        exports: any;
        require: NodeRequireFunction;
        id: string;
        filename: string;
        loaded: boolean;
        parent: any;
        children: any[];
    }
    
    declare var module: NodeModule;
    

    【讨论】:

    • 谢谢,是的,我已经做了同样的修复declare var module: NodeModule;,但我想知道(抱歉我的问题没有更明确)为什么它不是 @angular2 导入语句的一部分,比如平台的其余部分,问候
    • 模块对象在 NodeJS 中定义并在 Node 声明文件中声明。您要么没有此声明文件,要么没有在 tsconfig.json 文件中正确引用它。
    【解决方案2】:

    我解决这个问题的方法是在我的 tsconfig 文件中像这样“moduleId”:“commonjs”这样的模块后简单地添加 Id,错误就消失了!

    希望这会有所帮助, 吉姆

    【讨论】:

      猜你喜欢
      • 2015-09-19
      • 2016-09-18
      • 2017-06-23
      • 2023-02-15
      • 2016-12-16
      • 2017-03-29
      • 2016-12-18
      • 2019-05-06
      • 2019-08-09
      相关资源
      最近更新 更多