【发布时间】:2020-08-08 01:18:53
【问题描述】:
我目前正在尝试在个人项目中加载传单地图。 但由于导入问题,我的代码没有执行。 我使用以下命令安装了传单类型定义
npm install --save @types/leaflet
它有一个依赖项,所以我也安装了geojson
npm install --save @types/geojson
这是我的 tsconfig.json 文件的一部分
{
"compilerOptions": {
"typeRoots": ["node_modules/@types"],
"rootDir": ".",
"outDir": "build",
"target": "es2018",
"lib": [
"es2018",
"dom"
],
"types": [
"leaflet",
"geojson"
]
},
"include": [
"src/**/*.ts"
],
"exclude": [
"node_modules"
]
}
我遵循传单文档中的基本示例,但我没有编写内联代码,而是创建了一个类。
这是我加载所有 js 文件的索引的一部分,地图 div 位于主体内部(此处未显示)。
<link rel="stylesheet" type="text/css" href="ts\node_modules\leaflet\dist\leaflet.css">
<script src="ts\node_modules\leaflet\dist\leaflet.js"></script>
<script src="./ts/build/src/mapsmanager.js" type="module"></script>
<script type="module">
// Import classes
import { MapsManager } from './ts/build/src/mapsmanager.js';
initialize();
function initialize()
{
/* ADD MAP SCRIPT */
let mapsman = new MapsManager();
}
</script>
这是我的 mapsmanager.ts 文件,我从中得到错误
import * as Leaf from 'leaflet';
export class MapsManager
{
/*DO STUFF*/
}
这一行
import * as Leaf from 'leaflet';
给我以下运行时错误:
TypeError: Error resolving module specifier: leaflet
我也尝试将传单作为模块加载
<script src="ts\node_modules\leaflet\dist\leaflet.js" type="module"></script>
但它不起作用,它给了我另一个运行时错误:
TypeError: t is undefined (inside leaflet.js)
重要 不使用类并在索引中使用内联 JS,地图可以正常工作。它可能与项目配置/声明/定义/模块的东西,甚至可能与传单有关。
这是我的 package.json 的一部分
"files": [
"build",
"src"
],
"devDependencies": {
"gts": "^2.0.0",
"typescript": "~3.8.0",
"@types/node": "^10.0.3"
},
"dependencies": {
"@types/geojson": "^7946.0.7",
"@types/leaflet": "^1.5.12",
"leaflet": "^1.6.0"
}
我还尝试添加一个 index.d.ts 文件,我在其中放置了传单模块的声明,因为在传单之前我尝试使用使用此方法的 Google Maps JS API,但它不起作用。
我希望我对问题的描述是详尽的
【问题讨论】:
-
import L from 'leaflet';不起作用? -
@kboul 很遗憾没有,没有默认导出
-
除了类型之外,您是否安装了传单?你的 package.json 是什么样的?
-
@ghybs 我已经安装了它,但目前我正试图从他们的存储库下载 CSS 和 JS。我可以尝试让它在本地工作,我会将我的 package.json 添加到我的问题中。我会尽快更新你
-
甚至通过使用 我得到同样的错误。可能是项目设置有问题?
标签: javascript typescript ecmascript-6 leaflet frontend