【问题标题】:TypeScript with system.js module running in node error带有 system.js 模块的 TypeScript 在节点错误中运行
【发布时间】:2015-09-07 20:35:55
【问题描述】:

我想将 system.js 模块管理器与 TypeScript 一起使用。 我的计划是在节点中运行打字稿

问题是,如果我将我的 Main.js(从 Main.ts 生成)文件标记为入口点,它将因以下错误而崩溃:

ReferenceError: 系统未定义

这很正常,因为我生成的代码是这样开始的: System.register(["./Apple"], function(exports_1) {

可以肯定的是,默认情况下节点中没有 System 类。 那么如何制作 typescript 或者 node 来加载 system.js 模块呢?

我可以创建一个额外的 js 文件来使用 require 加载它,但我正在寻找 typescript 中的原生解决方案

谢谢!

【问题讨论】:

    标签: typescript


    【解决方案1】:

    您应该告诉编译器将您的模块导出到 commonjs 而不是 systemjs。 Node 使用 commonjs 作为其原生模块系统。

    【讨论】:

    • 但是根据 system.js 文档,我认为 system.js 支持节点:NodeJS 要在 NodeJS 中加载模块,请安装 SystemJS:npm install systemjs 然后我们可以等效地在浏览器中加载模块:@987654322 @ 如果使用 TypeScript,请在​​导入前设置 global.ts = require('typescript') 以确保正确加载。
    • 这是一种将 node 模块加载到浏览器中的方法,就像 browserify... 这不会帮助您在 node.js 中加载模块。 NodeJS 已经能够加载模块,它们使用的是 commonjs。 TypeScript 可以将模块转译成 commonjs。
    • 我不同意你的看法。您也可以在节点环境中使用 system.js,并且我已成功管理它。你只需要加载它: require("systemjs") ,然后你就可以使用 systemjs 的所有功能。我的问题是,为此我需要在我的项目中添加一个额外的 init.js 文件,但由于某种原因,我无法调试我的打字稿源(当我使用普通的 commonjs 系统时它可以工作)
    • 如果commonjs适合你,为什么还要坚持使用systemjs?
    • 只是为了补充答案,如果您使用tsconfig.json,则应该这样做:在compilerOptions部分内,将"module": "system"替换为"module": "commonjs"。这样,在运行tsc 时,它会将其编译为require 而不是System.register。此外,如果您在客户端也使用 TypeScript,您可能会收到错误:ReferenceError: require is not defined,在这种情况下,您应该从 System.Config 中删除 “format: ‘register’ “
    【解决方案2】:

    我可能没有正确理解,但您是否尝试按照 system.js GitHub 自述文件 (https://github.com/systemjs/systemjs) 上的 node.js 部分进行操作?

    $ npm install systemjs

    然后:

    var System = require('systemjs');
    
    // loads './app.js' from the current directory
    System.import('./app').then(function(m) {
      console.log(m);
    });
    

    希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      你在使用 tsconfig 文件吗? 您已添加模块:'system' 我遇到了类似的问题,这解决了它。还要确保 system.src.js 位于脚本的顶部。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-13
        • 2017-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-03
        • 1970-01-01
        相关资源
        最近更新 更多