'L' 引用 UMD 全局 - 编译错误
'L' refer to a UMD global - compilation error
我在我的项目中使用插件 ngx-leaflet, and 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-Service 中创建一个 SockJS 实例。 SockJs 只是 none angular 兼容 npm 包的示例:
import { SockJS } from 'sockjs-client';
//...
private socket: SockJs;
//...
this.socket = new SockJS(this.serverURI);
编译正常,但出现运行时错误
SockJS is not a constructor
经过一些谷歌搜索后,我偶然发现了 angular 中的输入,以使 js 类型可用于打字稿转译器 https://www.typescriptlang.org/docs/handbook/tsconfig-json.html。为了让它工作,我必须通过从 NPM 安装 @types/sockjs-client 来添加类型。产生了编译器错误
'SockJS' refers to a UMD global, but the current file is a module.
Consider adding an import instead.
此错误意味着类型为 typescript 转译器已知,但未显式导入。您必须导入类型以明确告诉打字稿您知道您正在使用外部脚本,在编译时打字稿无法验证其存在。该包的存在只会在运行时检查。显式导入语句如下所示
import * as SockJsClient from 'sockjs-client';
//...
private socket: SockJsClient.Socket;
//...
this.socket = new SockJsClient(this.serverURI);
我在我的项目中使用插件 ngx-leaflet, and 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-Service 中创建一个 SockJS 实例。 SockJs 只是 none angular 兼容 npm 包的示例:
import { SockJS } from 'sockjs-client';
//...
private socket: SockJs;
//...
this.socket = new SockJS(this.serverURI);
编译正常,但出现运行时错误
SockJS is not a constructor
经过一些谷歌搜索后,我偶然发现了 angular 中的输入,以使 js 类型可用于打字稿转译器 https://www.typescriptlang.org/docs/handbook/tsconfig-json.html。为了让它工作,我必须通过从 NPM 安装 @types/sockjs-client 来添加类型。产生了编译器错误
'SockJS' refers to a UMD global, but the current file is a module. Consider adding an import instead.
此错误意味着类型为 typescript 转译器已知,但未显式导入。您必须导入类型以明确告诉打字稿您知道您正在使用外部脚本,在编译时打字稿无法验证其存在。该包的存在只会在运行时检查。显式导入语句如下所示
import * as SockJsClient from 'sockjs-client';
//...
private socket: SockJsClient.Socket;
//...
this.socket = new SockJsClient(this.serverURI);