Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs typescript:导入jspm库_Angularjs_Typescript_Systemjs_Jspm - Fatal编程技术网

Angularjs typescript:导入jspm库

Angularjs typescript:导入jspm库,angularjs,typescript,systemjs,jspm,Angularjs,Typescript,Systemjs,Jspm,因此,我在将jspm包导入typescript时发现的大多数示例都假设我想使用Systemjs在浏览器中加载和解释它们。但是,我更愿意使用tsc来构建commonjs模块,并且只导入js代码,因为在我看来,这是一种更通用、更抗错误的方法 因此,我的目录结构如下所示: src/index.ts jspm_packages/... config.js tsconfig.json tsconfig具有以下内容: { "compilerOptions": { "target": "es5"

因此,我在将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安装npm:angular2
安装了angular2,并试图通过
import{bootstrap}从'angular2/platform/browser'导入到我的
index.ts

运行
tsc
时,我得到了错误信息

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

现在我想知道,我可以让typescript知道jspm包吗?我觉得我已经尝试过了,从tsconfig排除列表中删除了jspm_包,切换到节点模块解析或systemjs模块生成。也许我只是没有找到正确的组合。有没有关于下一步尝试的提示?

我也在努力解决这个问题,经过一些研究,我了解到目前还没有好的解决方案

解决办法:

A) 您可以复制依赖项并使用npm进行安装。tsc从npm解析后不应抛出任何错误

B) 更改tsconfig.json并将角度映射到jspm路径。比如说

"baseUrl": ".",
"paths": {
     "angular2/*": [
        "jspm_packages/npm/angular2@2.0.0-beta.7/*"
     ],
     "rxjs/*": [
        "jspm_packages/npm/rxjs@5.0.0-beta.2/*"
     ]
  }
有关完整示例,请参见

请注意,“baseUrl”和“路径”不是官方属性,仅在typescript编译器的beta版上

目前正在此处跟踪该问题:

我发现这太难了,因为intellij还不能识别路径选项。我用另一种方法,将jspm指向node_modules jspm站点的第一行是“jspm是SystemJS通用模块加载器的包管理器,构建在动态ES6模块加载器之上”。我不认为在没有system.js的情况下使用jspm是正确的方法。