在 Angular 项目中导入 2 个同名的 JavaScript 函数

Posted

技术标签:

【中文标题】在 Angular 项目中导入 2 个同名的 JavaScript 函数【英文标题】:Import 2 JavaScript functions with the same name in Angular project 【发布时间】:2021-03-25 04:15:54 【问题描述】:

我将 javascript 文件导入到 Angular 项目中,如下所示:https://www.truecodex.com/course/angular-6/how-to-use-external-js-files-and-javascript-code-in-angular

一切正常。但是,有一个问题。我导入了 2 个同名的 JavaScript 文件。所以,当我像这样在组件的打字稿中使用它时:

declare const CMenu: any

这两个函数之间存在名称冲突。

有没有一种方法可以导入 JavaScript 文件,只针对一个特定的 Angular 模块。例如,在 Angular.json 中指定要在哪个模块中导入 JavaScript 文件。我实际上有很多使用相同函数名的 JS 文件,我需要使用来自 2 个不同模块的那些(每个模块使用具有相同名称的不同函数)。

【问题讨论】:

【参考方案1】:

在需要的页面上,可以用别名导入。

 import CMenu as CeeMenu from 'locationA';
 import CMenu as CMenu from 'locationB;

 declare const a:CeeMenu;
 declare const b:CMenu;

这些导入可以合并到一个文件中,使用别名导出它们,因此您可以从一个位置导入它们。

 import CMenu as CeeMenu from 'locationA';
 import CMenu as CMenu from 'locationB;
 export CeeMenu as AA, CMenu as BB;

 import AA, BB from 'locationc';
 declare const a:AA;
 declare const b:BB;

【讨论】:

当我尝试像这样使用导入时:“从 '/../../externalJS/Cmain.js' 导入 CMain 作为 CMain”我收到错误“找不到命名空间 'as'”

以上是关于在 Angular 项目中导入 2 个同名的 JavaScript 函数的主要内容,如果未能解决你的问题,请参考以下文章

在 Angular nx 项目中导入 JavaScript 模块

无法在 Angular 项目中导入 socket.io-client

如何使用 Angular cli 在 Angular 2 中导入电子

不再能够在 Angular 4.2.3 中导入 BrowserAnimationsModule

如何在 Angular 6 中导入 sass 文件

在 Web Worker 中导入 tensorflow 时出现 Angular 打字稿类型检查问题