SystemJS的打字稿:无法找到自己的模块

时间:2017-01-21 21:47:48

标签: typescript systemjs

我开发了一个模块,现在我想将这个模块从应用程序中取出并放入node_modules中。但是有一个错误error TS2307: Cannot find module 'bipartite-graph'.,其中bipartite-graph是我自己的模块。

这是我的systemjs.config.ts

SystemJS.config({
  packages: {
    app: {
      main: './app.js',
      defaultExtension: 'js'
    },
    'bipartite-graph': {
      main: './bipartite-graph.js',
      defaultExtension: 'js'
    },
    'rxjs': {
      defaultExtension: 'js'
    }
  },
  map: {
    app: 'app',

    'rxjs': 'node_modules/rxjs',

    'bipartite-graph': 'app/bipartite-graph'
  }
});

这是app.ts

import { Subject } from 'rxjs/Subject';
import BipartiteGraph from 'bipartite-graph';

let subject: Subject<boolean> = new Subject<boolean>();
let bg = new BipartiteGraph([35, 50, 40], [45, 20, 30, 30], [[8, 6, 10, 9], [9, 12, 13, 7], [14, 9, 16, 5]]);

const n = 3, m = 4;

let i = 1, j = 1;
while (i <= n && j <= m) {
  bg.setAmount(i, j, Math.min(bg.getCapacity(i), bg.getDemand(j)));
  bg.setCapacity(i, bg.getCapacity(i) - bg.getAmount(i, j)); bg.setDemand(j, bg.getDemand(j) - bg.getAmount(i, j));
  if (bg.getCapacity(i) === 0) {
    i = i + 1;
  } else {
    j = j + 1;
  }
}

bg.draw();

项目转换并且最终应用程序正常运行但Webstorm和tsc抛出错误。我导入rxjs进行比较,但我找不到重要的区别。我错过了什么?我试图将模块放入node_modules并更改了systemjs.config.ts中的路径,但它没有帮助。整个项目可以在project找到。

1 个答案:

答案 0 :(得分:1)

typescript编译器找不到您的bipartite-graph模块,因为它没有读取您的systemJS配置。您必须添加tsconfig.json文件(如果尚未添加),并设置baseUrl和path选项。

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "bipartite-graph": ["app/bipartite-graph"],
      ...other path mappings
    }
  }
}

有关此主题的更多信息,请参阅官方文档:https://www.typescriptlang.org/docs/handbook/module-resolution.html