2017-09-04 89 views
1

我正在使用Leaflet將Font Awesome標記添加到Ionic 3應用程序,該Leaflet可以成功顯示Leaflet的內置標記,但是當我試圖導入小冊子.awesome標記模塊,ionic serve報告運行時錯誤,稱它無法找到模塊leaflet.awesome-markers運行時錯誤:無法找到模塊「leaflet.awesome-markers」Ionic 3

我遵循的一個建議是刪除node_modules目錄並讓npm重新安裝所有東西。這並沒有改變結果。

輸出的ionic info

cli packages: (/home/jett/git/mobiLoc/node_modules) 

@ionic/cli-plugin-cordova  : 1.6.2 
@ionic/cli-plugin-ionic-angular : 1.4.1 
@ionic/cli-utils    : 1.7.0 
ionic (Ionic CLI)    : 3.7.0 

全球套餐:

Cordova CLI : 7.0.1 

本地套餐:

@ionic/app-scripts : 1.3.7 
Cordova Platforms : android 6.2.3 ios 4.4.0 
Ionic Framework : ionic-angular 3.2.1 

系統:

Android SDK Tools : 26.0.2 
Node    : v7.10.0 
OS    : Linux 4.4 
npm    : 4.2.0 

package.json

"@types/leaflet": "^1.2.0", 
"@types/leaflet.awesome-markers": "^2.0.4", 
"leaflet": "^1.2.0", 
"leaflet.awesome-markers": "^2.0.4", 
"typescript": "2.3.4" 

相關代碼:

import * as L from "leaflet"; 
import "leaflet.awesome-markers"; 

private issueIcon: L.AwesomeMarkers.Icon; 

this.issueIcon = L.AwesomeMarkers.icon({ 
    icon: 'heart-broken', /* Heart with a crack */ 
    markerColor: 'red', 
    prefix: "fa" 
}); 

我是新來的兩個1)類型的腳本和2)調試的依賴類型定義第三方模塊的進口。但是,這似乎不是解決類型問題 - 我的IDE能夠識別在leaflet.awesome-markers文件中定義的類型。沒有編譯/轉儲錯誤/警告。

由於沒有編譯時問題,這似乎排除了該模塊上的權限問題,但我已檢查所有node_modules安裝在項目本地,並且在整個目錄中具有相同的權限。

對其他調試方法感興趣。

+0

你是如何導入的?你可以添加代碼嗎? –

回答

1

我不完全瞭解npm或我的IDE如何解析導入,但是我偶然發現了一個命令,該命令提供了有關嘗試解析導入的更多詳細信息。爲了獲得額外的細節,我用

npm run build 

,而不是

ionic serve 

npm run build命令提供的,這是試圖解決這一線時要使用不同的路徑和擴展的細節:

import "leaflet.awesome-markers"; 

我發現一旦將import語句更改爲實際.js文件的位置,構建就可以解析此文件:

import "leaflet.awesome-markers/dist/leaflet.awesome-markers";