尝试在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,但从未如此说过。它只是跳过了,但是就在那里。