我有一个像这样使用的软件包:
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'?),因为我不是在谈论编写我的代码,而是在如何导入和使用遇到冲突问题时,别人的两个软件包。
答案 0 :(得分:4)
不,我想您不能忽略该警告,因为在同一个作用域中存在两个具有相同名称的变量。
您可能需要以这种方式导入:
import { connect as somethingElse} from 'react-redux';
避免使用相同名称的变量。
我希望它将对您有帮助