es6如何导入已经在另一个js包中定义的

时间:2018-07-30 08:16:31

标签: javascript import ecmascript-6 module const

我有一个像这样使用的软件包:

import { something } from 'somewhere';

但是随后我导入了另一个软件包,我需要定义在其中定义的相同的something名称。

import myConsts from 'SomewhereElse';
const { something, another } = myConsts;

我遇到了错误({是正确的)something already defined

这是一个真实的例子:

import { connect } from 'react-redux';
// following lines from react-native-kontaktio sample code...
import Kontakt from 'react-native-kontaktio';
const { connect, configure, startScanning } = Kontakt;

我尝试了

import { connect as kontaktConnect, configure, startScanning } from 'react-native-kontaktio'  

但是得到Possible promise rejection ... (reactNativeKontaktio.connect) is not a function

如果我尝试更改

import { connect as reduxConnect } from 'react-redux';

我将不得不如下更改导出。那不会在其他地方破坏我的代码吗?

// export default connect(mapStateToProps, mapDispatchToProps)(AppMain);
export default reduxConnect(mapStateToProps, mapDispatchToProps)(AppMain);

我该如何克服?在某些情况下可以忽略警告吗? Ecma6中没有多态吗?


这不是a question about two classes with the same name,而是大约两个具有相同名称的方法或常量的类。 答案似乎可以在这里使用:

// instead of: import myConsts from 'SomewhereElse';
import { something as somethingElse, another } from 'SomewhereElse';

但是,当我使用... somethingElse().then(()=> ...时出现错误Possible promise rejection ... (SomewhereElse.something) is not a function

这也不是[关于解决一般的is already defined eslint错误的问题(Javascript standardjs - how to fix 'is already defined'?),因为我不是在谈论编写我的代码,而是在如何导入和使用遇到冲突问题时,别人的两个软件包。

1 个答案:

答案 0 :(得分:4)

不,我想您不能忽略该警告,因为在同一个作用域中存在两个具有相同名称的变量。

您可能需要以这种方式导入:

import { connect as somethingElse} from 'react-redux';

避免使用相同名称的变量。

我希望它将对您有帮助