私のプロジェクトでは、プラグイン ngx-leaflet および angular-cli を使用しています。
私はドキュメントに記載されているようにリーフレットを使用しようとしています、例えば:
問題は、コンパイルしようとしたときに次のエラーが発生したことです。
でコンパイル:
ng serve --aot
ここのコンテキスト:
私はL
をさまざまな方法でインポートしようとしました:
import { LeafletModule } from '@asymmetrik/ngx-leaflet';
しかし、ドキュメントや github には何も見つかりません。
コンパイルするためにモジュールatmを削除しましたが、回避策が必要です。
ここに私が使うpackage.json
があります:
これが私のコンポーネント内のコードで、'L'
のユーザーです。
@Component({
selector: 'app-map-screens-element',
templateUrl: './map-screens-element.component.html',
styleUrls: [
'./map-screens-element.component.scss',
],
})
export class MapScreensComponent implements OnInit {
/**
* setting map options
*/
public $mapOptions = {
// we use the layer openstreetmap
layers: [
L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'),
],
zoom: 15,
center: L.latLng([48.866667, 2.333333]),
};
}
そしてここに私のプロジェクトへのモジュールのインポート:
import { LeafletModule } from '@asymmetrik/ngx-leaflet';
@NgModule({
imports: [
LeafletModule,
],
declarations: [
// ...
],
exports: [
// ...
],
})
export class SharedElementModule { }
コンポーネントの上にLのインポートがありません。そのようです:
import * as L from 'leaflet';
angular-cliを新しい空のプロジェクトに複製した後、追加したsockjs-client NPM経由。次に、NGサービスでSockJSインスタンスを作成しようとしました。 SockJsは、none angular準拠のnpmパッケージのサンプルです。
import { SockJS } from 'sockjs-client';
//...
private socket: SockJs;
//...
this.socket = new SockJS(this.serverURI);
これは問題なくコンパイルされましたが、
SockJSはコンストラクタではありません
グーグルで検索した後、angularで入力を偶然見つけて、js-typesをTypeScriptトランスパイラーで使用できるようにしました https://www.typescriptlang.org/docs/handbook/tsconfig-json。 html 。これを機能させるには、NPMから@ types/sockjs-clientをインストールしてタイプを追加する必要がありました。これにより、コンパイラエラーが発生しました
「SockJS」はUMDグローバルを指しますが、現在のファイルはモジュールです。代わりにインポートを追加することを検討してください。
このエラーは、タイプがTypeScriptトランスパイラーに認識されているが、明示的にインポートされていないことを意味します。タイプをインポートして、コンパイル中にTypeScriptで存在を確認できない外部スクリプトを使用していることをTypeScriptに明示的に通知する必要があります。そのパッケージの存在は、実行時にのみチェックされます。明示的なインポート文は次のようになります
import * as SockJsClient from 'sockjs-client';
//...
private socket: SockJsClient.Socket;
//...
this.socket = new SockJsClient(this.serverURI);