Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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
VS代码可以';t使用/jspm_包;systemjs可以';看不到angular2 ts文件_Angular_Visual Studio Code - Fatal编程技术网

VS代码可以';t使用/jspm_包;systemjs可以';看不到angular2 ts文件

VS代码可以';t使用/jspm_包;systemjs可以';看不到angular2 ts文件,angular,visual-studio-code,Angular,Visual Studio Code,我正在使用JSPM创建一个基本的Angular 2工作流。它可以工作(请参阅),但我没有得到intellisense,因为VS代码没有看到角度jspm模块,如图所示。我该怎么办 这是我的tsconfig.json,包括Eric的建议: { "compilerOptions": { "target": "es5", "module": "commonjs", "removeComments": true, "emitDecoratorMetadata": tr

我正在使用JSPM创建一个基本的Angular 2工作流。它可以工作(请参阅),但我没有得到intellisense,因为VS代码没有看到角度jspm模块,如图所示。我该怎么办

这是我的
tsconfig.json
,包括Eric的建议:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "sourceMap": true,
    "moduleResolution": "node"
  }
}
通过使用这种导入语句,我可以在VS代码中取得一些进展

import { Component, View } from '../jspm_packages/npm/angular2@2.0.0-beta.0/ts/core';
但当我运行它时,会出现一个错误:

GET http://127.0.0.1:8080/jspm_packages/npm/angular2@2.0.0-beta.0/ts/core.js
下面是config.js的摘录

System.config({
  baseURL: "/",
  defaultJSExtensions: true,
  transpiler: "typescript",
  typescriptOptions: {
    "module": "commonjs",
    "emitDecoratorMetadata": true
  },
  paths: {
    "github:*": "jspm_packages/github/*",
    "npm:*": "jspm_packages/npm/*"
  },

  packages: {
    "app": {
      "main": "main",
      "defaultExtension": "ts"
    }
  },

这在目前是意料之中的,因为TypeScript编译器不知道如何“查找”JSPM包

VSCode依赖于TypeScript编译器,编译器只知道通过NPM包查找模块(例如,查看
node\u modules/
——这就是
“moduleResolution”:“node”
所做的)

由于您尚未通过NPM安装Angular 2,因此它不在
节点\u modules/
文件夹中,编译器也找不到它。如果您运行的是
tsc
命令行编译器,则会出现相同的错误

解决方案是,而且似乎是TypeScript@next对查找模块的
路径列表有一些基本支持(我还没有测试它)。但这似乎并不理想,因为每次JSPM依赖项更改时,您都必须手动维护此列表

另一种方法是在JSPM之外通过NPM安装angular2(例如,
NPM安装angular2--save
--save dev
),但这会复制依赖关系,并且在更改时也需要手动维护


这就是最前沿的生活…

在tsconfig.json的
编译器选项下添加
moduleResolution:node
。可能是您的VSCode版本旧了。我也面临同样的错误。其中一个解决方案是@EricMartinez@EricMartinez我尝试了你提到的上述解决方案,但无法解决这个问题。还有其他解决方案吗?那要看情况。我不知道你的设置是什么。在Simon的例子中,他也使用了旧的typescript版本(我在tsconfig.json中看到)。理想情况是使用TS 1.7.x。我所做的是将angular2安装为npm的开发依赖项。这也起到了作用。希望将来能解决这个问题。npm是否有可能安装angular2——保存dev以实现此目的?但是,我同意,这还不够理想。我必须尽量减少同步需求的一个想法是创建一个npm脚本(或jspm脚本?),它基本上执行
npm安装${packageName}——保存开发和jspm安装npm:${packageName}
(不过,在这种情况下,您可以执行变量替换;这样,当您运行此脚本时,它将同时为您执行这两项操作。是的
--save dev
也可以工作。我想,我更新了我的答案以提及它。我想脚本可能会有所帮助,但还有其他问题,例如在更新依赖项时保持所有版本同步CY,或者在删除NPM时从NPM和JSPM中删除等等。好的点——在我的思维过程中没有考虑到足够的更新和删除依赖性——但是这些都是非常重要的开发工作流过程。因此,需要一个更全面的方法,一个来自StaseScript的一流支持。因此,我尝试了JSPM 0.17-BET。a、 28和TypeScript 2.0.2(2.0 RC),并正确配置了它,因此我现在在VS代码中有IntelliSense支持。它仍然需要一些“路径映射”在
tsconfig.json
中,但这比在JSPM和NPM之间复制Angular 2的安装要好。如果JSPM可以选择性地为我们管理这些tsconfig映射,那就太好了,因为它是安装位置以及这些路径满足的依赖关系方面的专家。