typescript angular-cli生成时出现错误:不是模块

zi8p0yeb  于 2022-12-05  发布在  TypeScript
关注(0)|答案(2)|浏览(135)

我有一个Angular 4.1.1应用程序,它成功地引入leaflet.js以提供Map和Map图层等。我正在尝试添加一个名为browserPrint的传单插件
我将瓣叶导入组件,如下所示:

import * as L from "leaflet";
import * as browserPrint from "../../../../assets/scripts/leaflet.browser.print.min";

Leaflet的import语句工作得很好,我可以创建和显示Map。
当我尝试为browserPrint添加第二行时出现错误。
angular-cli构建抛出错误:
在/src/app/services/driverLists/驱动程序列表Map/驱动程序列表中的错误。Map。组件。ts(8,31):文件“/src/assets/scripts/leaflet.browser.print.min.js”不是一个模块。
我尝试过的方法:
1.我添加了**声明var browserPrint:任何;**到打字。d.ts
1.我尝试将导入切换为:

导入“../../../../资产/脚本/传单.浏览器.打印.分钟”;

但那只会带来大量的错误,把Map都弄坏了
1.我尝试将导入切换为:

从“../../../../assets/scripts/leaflet.browser.print”中导入 * 作为浏览器打印;

但错误变为***找不到模块传单.browser.print***
1.我也尝试过改变文件路径来使用leaflet.browser.print node modules文件夹中的文件。但是同样的错误也产生了。
问题
有人能帮我弄清楚如何将传单浏览器打印插件添加到Angular 4+应用程序内的传单Map吗?
先谢谢你。

nhjlsmyf

nhjlsmyf1#

我在ngx-leaflet的文档中看到,我们应该创建一个./src/typings.d.ts文件并添加下面的代码。

import * as L from 'leaflet';
declare module 'leaflet' {
  namespace control {
    function browserPrint(options?: any): Control.BrowserPrint;
  }
  namespace Control {
    interface BrowserPrint {
      addTo(map: L.Map): any;
    }
  }
}

这对我很有效。

mwecs4sa

mwecs4sa2#

我认为您希望将该文件包含在angular-cli.json的“scripts”数组中,这样就可以将其打包到webpack输出中,而不需要实际导入它(正如您在上面所说的,该特定文件不导出任何内容,因此无论如何也不能导入它)。
文档位于:
https://github.com/angular/angular-cli/wiki/stories-global-scripts

相关问题