Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何强制巴贝尔执行转换?_Node.js_Babeljs - Fatal编程技术网

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"
  },