使用 ES6 时,导入函数如何在一个文件中未定义,而在另一个文件中未定义?
When using ES6, how can an imported function be undefined in one file, and not in another?
我将 babel / ES6 与 webpack 结合使用。我在两个不同的地方导入相同的 'actions' 文件——导出一堆函数。在一个地方 returns 一个模块,另一个 undefined
:
actions.js
export function test() { ... }
export function test2() { ... }
App.js
import actions from './actions'
class App extends React.Component { ... }
console.log(actions); //<-------- Object{test:function,test2:function)
export default connect((state) => { ... },actions)(App);
编辑
App.js 工作的原因是因为它实际上使用 import * as actions
如下所示,我只是在示例中重新输入错误
NestedComponent.js
import actions from './actions'
class NestedComponent extends OtherComponent { ... }
console.log(actions); //<-------- logs undefined
export default connect((state) => { ... },actions)(NestedComponent);
这与webpack定义modules/files的顺序有关吗?
这在任何一种情况下都不起作用,因为您导入了错误的值。 import foo from '...'
导入模块的 default 导出,但您没有默认导出,您只有命名导出。
你应该使用的是
import {test, test2} from './actions';
// or
import * as actions from './actions';
发生这种情况的另一种常见情况是,如果您使用 Jest 进行测试并且启用了自动模拟行为。很悲痛,这样的陷阱。
我运行陷入了类似的问题,由循环依赖引起。尝试从文件 'B' 导入文件 'A' 中的常量,而文件 'B' 又尝试从文件 'A'.
导入常量
我将 babel / ES6 与 webpack 结合使用。我在两个不同的地方导入相同的 'actions' 文件——导出一堆函数。在一个地方 returns 一个模块,另一个 undefined
:
actions.js
export function test() { ... }
export function test2() { ... }
App.js
import actions from './actions'
class App extends React.Component { ... }
console.log(actions); //<-------- Object{test:function,test2:function)
export default connect((state) => { ... },actions)(App);
编辑
App.js 工作的原因是因为它实际上使用 import * as actions
如下所示,我只是在示例中重新输入错误
NestedComponent.js
import actions from './actions'
class NestedComponent extends OtherComponent { ... }
console.log(actions); //<-------- logs undefined
export default connect((state) => { ... },actions)(NestedComponent);
这与webpack定义modules/files的顺序有关吗?
这在任何一种情况下都不起作用,因为您导入了错误的值。 import foo from '...'
导入模块的 default 导出,但您没有默认导出,您只有命名导出。
你应该使用的是
import {test, test2} from './actions';
// or
import * as actions from './actions';
发生这种情况的另一种常见情况是,如果您使用 Jest 进行测试并且启用了自动模拟行为。很悲痛,这样的陷阱。
我运行陷入了类似的问题,由循环依赖引起。尝试从文件 'B' 导入文件 'A' 中的常量,而文件 'B' 又尝试从文件 'A'.
导入常量