当我使用带有此配置的节点配置的babel-preset-env的webpack时:
{
target: 'node',
context: __dirname,
entry: {
server: ['./src/server.js'],
},
output: {
filename: '[name].bundle.js',
chunkFilename: '[name].bundle.js',
path: path.join(__dirname, '/dist'),
},
module: {
rules: [{
test: /\.js$/,
use: {
loader: 'babel-loader',
options: {
presets: [
['env', {
targets: {
node: "current",
},
}],
'react'
],
},
},
}],
},
}
我的服务器使用一些可以通过webpack检测到的模块,如:
[319] ./node_modules/react-router-dom/es/withRouter.js 395 bytes {0} [built]
我的问题是 es modules 被转换为捆绑包中的 es5 one ,我做错了什么?
Webpack 3.6 babel-preset-node 1.6
答案 0 :(得分:0)
您应该在配置中添加libraryTarget
:
output: {
filename: ...,
pathL ...,
libraryTarget: 'commonjs2'
},
现在节点不支持es模块(仅当你使用flag运行时才支持)所以我认为webpack的输出很好。
答案 1 :(得分:0)