Angular-如何从JS包导入模块

问题描述

我正在尝试从位于vendorsrc/文件夹内的生成的Angular库包中导入模块。

index.html

<head>
...
    <script type="text/javascript" charset="utf-8" src="./vendor/example/bundles/example.umd.js"></script>
    
</head>

尽管如此,我在app.module.ts中从中导入模块时遇到了一些麻烦。拜托,有什么想法吗?

似乎角度库的@ angular / core和@ angular / common peerDependencies也应该捆绑在脚本中才能正常工作。

我将不胜感激

解决方法

您不应添加指向本地文件的<script>标记,因为该本地文件不会包含在构建中。

相反,请使用angular.json文件的scripts configuration section,如下所示:

"scripts": [
    { "input": "src/vendor/example/bundles/example.umd.js" }
]

这会将example.umd.js文件嵌入Angular构建的专用文件中。由于将其打包为UMD,因此对象将附加到window,其中包含您要导入的库的API。

为了阻止TypeScript抱怨不存在的变量,只需添加以下内容:declare var example;(用全局对象的真实名称替换example)。