【问题标题】:Typescript AMD Target Resolving to CommonJS [duplicate]Typescript AMD Target Resolving to CommonJS [重复]
【发布时间】:2018-04-04 06:56:41
【问题描述】:

我的项目中有一个 tsconfig,它指定了“amd”的模块目标,但是当我的文件编译时,我得到的输出看起来更像 CommonJS。示例:

tsconfig:

{
    "compilerOptions": {
        "module": "amd",
        "target": "es5",
        "moduleResolution": "node",
        "sourceMap": false,
        "newLine": "LF",
        "baseUrl": ".",
        "lib": ["es5", "es2015.promise", "dom"]
    }
}

打字稿文件:

export function test() {
    console.log('Starting Up', '<--------------');
}

编译文件:

define(["require", "exports"], function (require, exports) {
    Object.defineProperty(exports, "__esModule", { value: true });
    function test() {
        console.log('Starting Up', '<--------------');
    }
    exports.test = test;
});

预期的编译文件:

define([], function () {
    function test() {
        console.log('Starting Up', '<--------------');
    }
    return { test: test };
});

让我失望的是“导出”对象。对于 AMD 模块,这应该不是必需的,只有 return 语句。有没有办法纠正这个问题?

【问题讨论】:

  • 当然我的被标记为重复,即使我先问过它;)。无论如何,另一个问题中的解决方案也对我有用。

标签: javascript typescript amd


【解决方案1】:

很遗憾没有。这就是 TypeScript 的 AMD 输出的形状,它符合 AMD 标准。 AMD 提供了这个工具,TypeScript 使用它。

【讨论】:

  • 那真是太糟糕了。我的代码运行的环境似乎覆盖了导出对象,所以我每次推送代码时都必须进入我的编译文件并将 export.function 行更改为 return 语句。
  • @JonLamb 那是什么环境?如果他们检测到或假设 CommonJS,一些加载器可能会这样做
  • 它带有一个名为 NetSuite 的 ERP 系统。他们使用名为 Rhino 的 java 解释器来解释 AMD 模块。通常,导出对象是可用的,但在某些情况下,根据您的自定义模块的范围,它们似乎已禁用或忽略导出对象。在这种情况下,我认为我唯一的选择是使用 gulp 或其他东西来切换语法。
  • @JonLamb 可能会在 TypeScript 存储库上提交功能请求以允许配置发射。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-20
  • 1970-01-01
  • 2012-12-07
  • 2017-11-25
  • 2012-10-10
相关资源
最近更新 更多