繁体   English   中英

打字稿:导入jspm库

[英]typescript: import jspm libraries

因此,我在将jspm软件包导入typescript时发现的大多数示例都假设我想使用Systemjs在浏览器中加载和解释它们。 但是,我想使用tsc来构建commonjs模块并仅导入js代码,因为对我来说这似乎是更通用且更抗错误的方法。

所以我的目录结构如下所示:

src/index.ts
jspm_packages/...
config.js
tsconfig.json

tsconfig具有以下内容:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "noEmitOnError": true,
    "noImplicitAny": false,
    "rootDir": "src",
    "outDir": "target/app",
    "sourceMap": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "declaration": true
  },
  "exclude": [
    "jspm_packages",
    "node_modules",
    "typings",
    "target"
  ]
}

为了进行测试,我将jspm install npm:angular2 2与jspm install npm:angular2并尝试import { bootstrap } from 'angular2/platform/browser';通过import { bootstrap } from 'angular2/platform/browser';将其导入我的index.ts import { bootstrap } from 'angular2/platform/browser';

运行tsc出现错误

src/index.ts(1,27): error TS2307: Cannot find module 'angular2/platform/browser'.

现在我想知道,我可以让打字稿知道jspm包吗? 我觉得我已经尝试了全部,从tsconfig exclude列表中删除了jspm_packages,切换到节点模块解析或systemjs模块生成。 也许我只是找不到合适的组合。 关于下一步尝试的任何提示?

我也在同一个问题上苦苦挣扎,经过一番研究,我知道到目前为止还没有好的解决方案。

解决方法:

A)您可以复制依赖项,并使用npm进行安装。 自从npm解析以来,tsc不应引发任何错误。

B)更改您的tsconfig.json并将angular映射到jspm路径。 例如

"baseUrl": ".",
"paths": {
     "angular2/*": [
        "jspm_packages/npm/angular2@2.0.0-beta.7/*"
     ],
     "rxjs/*": [
        "jspm_packages/npm/rxjs@5.0.0-beta.2/*"
     ]
  }

有关完整示例,请参见https://github.com/frankwallis/plugin-typescript/tree/master/examples/angular2

请注意,“ baseUrl”和“ paths”不是官方属性,仅在打字稿编译器的beta版本上。

该问题当前正在此处跟踪: https : //github.com/Microsoft/TypeScript/issues/6012

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM