VS Intellisense可以与Esri一起使用,但是TS编译器失败

时间:2019-07-18 20:09:32

标签: visual-studio typescript arcgis

尝试在TS类中使用Esri Map。安装了arcgis-js-api,具有index.d.ts。 VS无法建立...发现使用cli进行tsc操作后,我发现BaseMap无法解析。

一旦我偶然发现了如何使用cli来使用tsc,我至少可以获得反馈,并且该反馈表明如果我仅使用Map,一切都会很好。如果我使用任何其他esri / thing,npm安装的index.d.ts文件中有数十个,则不会编译。所有这些都可以使用Intellisense,但是tsc不能解决任何问题。我已经使用基于``net search''可以想象的所有东西来缠绕tsconfig.json。我的esModuleInterop为true,我认为这就是让我使用require或import *等的原因;两者都可以正常工作(分别为ofc),因为Intellisense知道底图是什么,但tsc却不行。

我可以使用“裸”名称来构建它……不导入任何内容,也不使用底图,而是使用__esri.Basemap。 Intellisense对此感到满意,而tsc ...也很满意,但是它没有模块,并且在运行时失败。我认为这只是将罐子踢上了路,如果我能够构建TS导入,它也将运行。

我也在使用jQuery加载api,但看不到这是一个构建问题。如果它将构建并无法加载,那么我认为jQuery魔术中可能存在某些冲突。它仍然是其中的一部分。

在执行此简化代码时,我发现必须导入Map,现在它也可以解析esri / Map。实际上,这是一件好事(tm),b / c表示它是一致的。那真的让我感到困扰。 (笑)所以现在esri中的任何事情都无法解决。

import Map = require("esri/Map");
import BaseMap = require("esri/Basemap");

Class EsriMapService {
  constructor() {
    $.getScript("https://js.arcgis.com/3.28/compact/", function() {
      var map = new Map();
      map.basemap = "streets" as any as Basemap;
    });
  }
}

tsconfig.json:

{
  "compilerOptions": {
    "noImplicitAny": false,
    "esModuleInterop": true,
    "experimentalDecorators": true,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es6",
    "alwaysStrict": true,
    "module": "amd",
    "moduleResolution": "node",
    "typeRoots": [
      "./typings"
    ]
  },
  "lib": [
    "dom",
    "es6",
    "scripthost",
    "es2015.iterable"
  ],
  "exclude": [
    "wwwroot"
  ]
}

Visual Studio也使用此tsconfig.json,因此,当我使用tsc进行cli构建时,我可以对VS在做什么有所了解,并向我隐瞒。我已经更改了module,moduleResolution,将内容添加到typeRoots,将node_modules移动到了不同的目录,从排除中删除了“ node_modules”,并更改了目标。我什么都不记得了。

npm将arcgis-js-api安装到C:/ svn / SlnDir / ProjDir / node_modules。

我希望模块能够解决。我得到:

Loading module 'esri/Map' from 'node_modules' folder, target file type 'TypeScript'.
Directory 'C:/svn/SlnDir/ProjDir/scripts/node_modules' does not exist, skipping all lookups in it.
Directory 'C:/svn/SlnDir/node_modules' does not exist, skipping all lookups in it.
Directory 'C:/svn/node_modules' does not exist, skipping all lookups in it.
Directory 'C:/node_modules' does not exist, skipping all lookups in it.
Loading module 'esri/Map' from 'node_modules' folder, target file type 'JavaScript'.
Directory 'C:/svn/SlnDir/ProjDir/scripts/node_modules' does not exist, skipping all lookups in it.
Directory 'C:/svn/SlnDir/node_modules' does not exist, skipping all lookups in it.
Directory 'C:/svn/node_modules' does not exist, skipping all lookups in it.
Directory 'C:/node_modules' does not exist, skipping all lookups in it.
======== Module name 'esri/Map' was not resolved. ========

然后对esri / Basemap进行相同操作

我也希望它能说它找到了C:/ svn / SlnDir / ProjDir / node_modules,但从未如此说过。它只是跳过了,但是就在那里。

0 个答案:

没有答案