这个问题在这里已有答案:
源代码是用ES6编写的,并使用babel和webpack转换为ES5,它看起来像这样:
src/2.js
export default {
...
}
src/1.js
import 2 from './2.js'
export default {
...
}
1.js
是webpack的主要入口脚本 . 这是webpack配置:
var webpack = require('webpack');
var path = require('path');
module.exports = {
'entry': './src/1.js',
'module': {
'loaders': [{
'test': /\.js$/,
'exclude': /node_modules/,
'loader': 'react-hot-loader/webpack'
}, {
'test': /\.js$/,
'exclude': /node_modules/,
'loader': 'babel-loader'
}]
},
'output': {
'path': path.resolve(__dirname, './dist'),
'publicPath': '/',
'filename': 'index.js'
}
}
然后将ES5转换文件 index.js
作为npm模块发布,比如'example_module' .
现在,当我这样做时,在另一个应用程序中:
import exampleModule from `example-module`;
console.log(exampleModule) // <-- empty object
尝试导入模块时,我得到一个空对象 .
我似乎理解(不确定)转换文件是在本机ES5环境中的脚本标记内使用,不能在ES6代码中导入 .
问题是,我应该如何调整构建过程,以便模块可以在ES5和ES6环境中使用?
1 回答
当你
import exampleModule from 'example-module';
它默认在different-app
项目的node_modules/
文件夹中查找 .你有两种可能性:
使用webpack和aliases告诉webpack从另一个绝对文件夹中获取
example-module
.将
example-module
与您最喜爱的包管理器(yarn / npm)链接到node_modules
文件夹 .我个人会选择#2 .