我不确定我在这里缺少什么。我正在使用jspm和es6-module-loader开发一个项目。我有一个模块定义如下:
import hooks from './hooks';
import api from './api';
import tools from './tools';
const StencilUtils = {
hooks: hooks,
api: api,
tools: tools,
};
export {hooks, api, tools};
export default StencilUtils;
/* global define */
(function(root) {
if (typeof define === 'function' && define.amd) {
define(function() {
return (root.stencilUtils = StencilUtils);
});
} else if (typeof module === 'object' && module.exports) {
module.exports = StencilUtils;
} else {
window.stencilUtils = StencilUtils;
}
}(this));
我正在将该模块导入另一个文件,并使用它如下:
import utils from 'bigcommerce/stencil-utils';
utils.hooks.on('cart-item-add', (event, form) => {
// do stuff
});
加载文件后,我收到utils
为undefined
的错误消息。如果我将文件更改为:
import {hooks} from 'bigcommerce/stencil-utils';
hooks.on('cart-item-add', (event, form) => {
// do stuff
});
它正常工作。因此,使用默认导出语句似乎无法正常工作。导入此问题的导入或导出语句是否存在明显错误?
答案 0 :(得分:4)
我认为这个问题有两件事:
方法1
xyz.js
export const a = 1;
abc.js
import {a} from "xyz";
方法2
xyz.js
export const a = 1;
abc.js
import {* as myModule} from "xyz";
console.log(myModule.a);
所以在你的情况下
export {hooks, api, tools};
它可以是
import * as utils from 'bigcommerce/stencil-utils';
或
import {hooks} from 'bigcommerce/stencil-utils';
它可以是
export default {
hooks: hooks,
api: api,
tools: tools,
};
或者
const StencilUtils = {
hooks: hooks,
api: api,
tools: tools,
};
export { StencilUtils as default };
希望这会对你有所帮助。有关详细信息,请参阅this