Javascript 命名导入抛出错误,而来自的导入*不';T
考虑my react应用程序中功能的以下文件夹结构:Javascript 命名导入抛出错误,而来自的导入*不';T,javascript,reactjs,import,jestjs,Javascript,Reactjs,Import,Jestjs,考虑my react应用程序中功能的以下文件夹结构: feature1 actions actionTypes.js crud.js component.js container.js reducer.js sagas.js sagas.test.js services.js index.js feature2 actions actionTypes.js
feature1
actions
actionTypes.js
crud.js
component.js
container.js
reducer.js
sagas.js
sagas.test.js
services.js
index.js
feature2
actions
actionTypes.js
crud.js
component.js
container.js
reducer.js
sagas.js
sagas.test.js
services.js
index.js
在index.js
文件中,我导入了每个特性的组件、容器、减速器等,并从索引文件中导出了它们
示例:feature1/index.js
import myReducer from './reducer';
import * as mySagas from './sagas';
import * as myServices from './services';
import * as myCRUD from './actions/crud';
import Component from './component';
import Container from './container';
import * as actionTypes from './actions/actionTypes';
export {
myReducer,
actionTypes,
myCRUD,
mySagas,
myServices,
Component,
Container,
};
现在在feature2
的sagas.test.js
文件中,我可以如下导入feature1的服务:
从“../feature1”导入{myServices}代码>
上面的行导致失败:TypeError:window.locale\u name在运行Jest测试时不是函数window.locale\u name
是在第三方库中定义的函数,它在feature1
中导入。但另一方面,如果我以以下方式导入相同的内容,则不会抛出错误
import*作为myServices从“../feature1/services”导入代码>在我看来,导入的myServices
取决于设置的窗口。locale\u name
。导入*
有效的原因可能是因为在feature1/index.js
的导出值中,在myServices
之前导出的其中一个值设置了您的myServices
将使用的窗口。locale\u name
我相信在ES6模块中,只有导入的导出代码才能运行树震动。功能1
是否有命名导出?还是默认导出?谢谢你的回答,但不幸的是,答案不是这样。我尝试将myServices
作为index.js文件中的最后一项导出,但没有效果。@cbalawat将myServices放在导出中的何处并不重要;如果使用分解结构导入,将不会加载其依赖项,脚本将失败。尝试将myServices作为文件中的第一项导出,并使用“*as”导入,您会看到它失败,原因与未加载其依赖项相同。