【问题标题】:TypeScript won't resolve module when import is used使用导入时 TypeScript 不会解析模块
【发布时间】:2015-08-07 01:19:42
【问题描述】:
// Modules/MyModule.ts --------------------------------
import fs = require("fs");

module Hello {
    export function World(): string {
        return "Hello World";
    }
}


// Main/App.ts ----------------------------------------
console.log(Hello.World()); // Cannot find name 'Hello'

由于某种原因,这会产生上面指定的错误。奇怪的是,如果我取消注释 import 语句,我就不会再收到这个错误了。 (反正没用过)

两者都产生相同的错误:

tsc Main/App.ts --module "commonjs"

tsc Main/App.ts --module "amd"

这真的是编译器错误还是我遗漏了什么。我需要指定外部模块需要以某种方式不同吗?

【问题讨论】:

    标签: node.js typescript amd commonjs typescript1.4


    【解决方案1】:

    这个出现了很多 - TypeScript 中快乐和幸福的关键是选择一个内部模块或外部模块,而不是两者。

    我写过更多关于choosing between internal and external modules in TypeScript 的文章。底线是只选择一个。

    在您的情况下,您需要完全致力于外部模块。这是一个更新的示例:

    // Modules/Hello.ts --------------------------------
    import fs = require("fs");
    
    export function World(): string {
        return "Hello World"
    }
    

    上述文件的模块名称是Hello,因为它在一个名为Hello.ts的文件中。

    你可以这样使用它...

    // Main/App.ts ----------------------------------------
    import Hello = require("./Modules/Hello");
    
    console.log(Hello.World());
    

    附言Node 应用程序使用commonjs 模式编译——但这也适用于 AMD。

    【讨论】:

    • 谢谢,这解决了我的问题。现在不知何故说得通了,但另一方面,这听起来像是打字稿规范中的不一致
    • 这似乎有点混乱 - 但内部和外部模块之间的选择是排他性的。
    猜你喜欢
    • 2020-10-18
    • 2014-05-27
    • 2023-04-02
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 2019-05-25
    • 2019-12-12
    • 2013-08-25
    相关资源
    最近更新 更多