我不确定这是否与React Native相关,但这是我的版本:
"react-native": "0.46.4",
"babel-preset-react-native": "2.1.0",
// src/utils/a.js
export default 'a file works!'
// src/utils/b.js
export default 'b file works!'
// src/utils/index.js
import a from './a'
import b from './b'
export { a, b }
基本上,当我尝试:
import * as utils from 'src/utils'
// or
import { a, b } from 'src/utils'
它会返回未定义的 "a" 和 "b" 属性,例如:
utils = { a: undefined, b: undefined }
我不清楚在这里做错了什么,我的猜想是这些a/b.js
文件没有在应该加载它们的时候加载。以前我做过一个hack,在监听函数utils.auth
中,我必须添加if (auth && auth.listener)
,这样就可以工作了,因为当应用程序启动时,listener是未定义的,但是随后就变成了它应该有的值。
编辑: 似乎如果我尝试:
// src/utils/index.js
const a = 'a works'
const b = 'b works'
export { a, b }
结果是相同的。
undefined
时,这是由于您的模块存在循环依赖关系。例如,如果您在 utils 加载时尝试从中导入a
,则它还没有导出该值。 - loganfsmythimport a from 'src/utils/a'
就能正常工作,这肯定和之前提到的模块循环有关。 - Flávio Carvalho