【问题标题】:Import node module with systemJs in typescript file在 typescript 文件中使用 systemJs 导入节点模块
【发布时间】:2016-12-11 03:27:33
【问题描述】:

所以我尝试将节点模块(immutablejs)导入到我的打字稿文件中:

/// <reference path="../node_modules/immutable/dist/immutable.d.ts" />
import { Map } from 'immutable';
var myMap = Map();

这是我的 index.html 中的脚本标签:

<script src="node_modules/systemjs/dist/system.js"></script>
<script src="node_modules/typescript/lib/typescript.js"></script>
<script>
    System.config({
        transpiler: 'typescript',
        packages: {
            src: {
                defaultExtension: 'ts'
            }
        }
    });
    System
    .import('src/main.ts')
    .then(null, console.error.bind(console));
</script>

虽然智能感知在 VS Code 中工作,但我的浏览器告诉我它找不到不可变的: system.src.js:1057 GET http://localhost:3000/immutable/ 404(未找到)

用相对路径导入一个自写的打字稿模块效果很好..

我做错了什么?

【问题讨论】:

    标签: typescript import systemjs node-modules


    【解决方案1】:

    拥有满足 typescript 编译器的正确类型定义不会配置 systemjs 知道在哪里加载 immutablejs 的真实 javascript 代码。

    当您使用 systemjs 时,轮到您相应地配置 systemjs,以便它知道从哪里加载库。如果您不这样做,它将尝试将导入的模块作为文件从与您的导入同名的服务器加载。对于完全相同的问题,请参阅此答案:

    How to configure SystemJs for ImmutableJs to work in Angular 2 project

    有关如何配置 systemjs 的更多详细信息,请参阅此处的文档:https://github.com/systemjs/systemjs/blob/master/docs/config-api.md#map

    您还可以在设置 tsconfig 时省略 d.ts 文件的引用路径,以便它会自动搜索 node_modules 或使用诸如类型化之类的工具来安装不提供某些类型的库的定义与他们的模块。 (请参阅此处:https://github.com/typings/typings - 但对于 immutablejs,这不应该是必需的)。

    【讨论】:

    • 谢谢! system.config.js 是问题所在!
    猜你喜欢
    • 2017-04-03
    • 2016-03-23
    • 2013-08-25
    • 2015-08-12
    • 2012-11-03
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    相关资源
    最近更新 更多