Node.js 如何强制巴贝尔执行转换?
我有以下文件:Node.js 如何强制巴贝尔执行转换?,node.js,babeljs,Node.js,Babeljs,我有以下文件: ./client/.babelrc ./client/index.js ./server/.babelrc ./server/index.js 客户 /client/index.js代码是: 导入“测试”; /client/.babelrc是: { “预设”:[ “es2015网页包”, “第0阶段”, “反应” ] } 客户端代码由webpack 2使用。网页2。是一个babel预置,它将代码转换为ES5,但不将ES6模块转换为CommonJS。因此,传输的代码保持不变
./client/.babelrc
./client/index.js
./server/.babelrc
./server/index.js
客户
/client/index.js
代码是:
导入“测试”;
/client/.babelrc
是:
{
“预设”:[
“es2015网页包”,
“第0阶段”,
“反应”
]
}
客户端代码由webpack 2使用。网页2。是一个babel预置,它将代码转换为ES5,但不将ES6模块转换为CommonJS。因此,传输的代码保持不变
服务器
/server/index.js
代码是:
import'/../client';
/server/.babelrc
是:
{
“预设”:[
“es2015”,
“第0阶段”
]
}
node.js v5.5.0不支持ES6模块。因此,整个代码需要传输到ES5。但是,节点脚本需要包含部分客户端代码(例如,配置、初始状态)
我尝试使用babel节点运行服务器代码
cd ./server
babel-node ./index.js
这会产生一个错误:
./client/index.js:1
import 'test';
^^^^^^
SyntaxError: Unexpected token
它之所以这样做是因为babel节点
(和babel
)尊重/client/.babelrc
在编译服务器代码时,如何强制巴贝尔在整个代码库中使用Babel-plugin-transform-es2015-modules-commonjs
plugin(或es2015
preset)
我尝试过使用--无babelrc
选项。但它只会忽略当前工作目录中的.babelrc
。刚刚处理了一个类似的问题
我最终删除了[]中的所有预设
通过网页[]添加客户端预设
并通过[]运行服务器预设
module: {
loaders: [
{ test: /\.js$/, exclude: /node_modules/,
loader: 'babel-loader',
query: { presets: ["react", "es2015-webpack"] } }
]
},
"scripts": {
"start": "set NODE_ENV=development; webpack --progress && babel-node --presets es2015,react modules/server.js"
},