[英]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.