Javascript 如何编译导入的ES6节点模块?

Javascript 如何编译导入的ES6节点模块?,javascript,node.js,reactjs,babeljs,Javascript,Node.js,Reactjs,Babeljs,我有一个用ES6编写的应用程序,我正在使用babel转换该应用程序中的所有文件。该应用程序还包括一个带有React组件的node_模块(也用ES6编写) 我正在导入组件,如下所示: import { Box } from 'components/Box' 当我跑的时候 babel-node --presets es2015,stage-0,react 在导入Box组件的文件中,我在第1行的components/Box文件中发现一个错误: (function (exports, require

我有一个用ES6编写的应用程序,我正在使用babel转换该应用程序中的所有文件。该应用程序还包括一个带有React组件的node_模块(也用ES6编写)

我正在导入组件,如下所示:

import { Box } from 'components/Box'
当我跑的时候

babel-node --presets es2015,stage-0,react
在导入Box组件的文件中,我在第1行的components/Box文件中发现一个错误:

(function (exports, require, module, __filename, __dirname) { import React, { Component } from 'react'
                                                              ^^^^^^
SyntaxError: Unexpected token import

我认为发生这种情况的原因是因为babel node没有传输node_模块。这很有意义,因为大多数节点模块都是用commonjs格式编写的。是否有办法将此特定节点模块列入白名单,以便进行传输?

您能提供更多信息吗?也许你指的是其他文件?你想达到什么目标

我试着运行下面的
package.json
,效果很好

{
  "name": "babel-node-test",
  "version": "1.0.0",
  "description": "",
  "main": "something.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "babel-preset-es2015": "^6.5.0",
    "babel-preset-react": "^6.5.0",
    "react": "^0.14.7"
  }
}
将这些文件作为测试:

something.js

import { Box } from './components/Box';
import React, { Component } from 'react';

class Box extends Component{

}

export default Box;
components/box.js

import { Box } from './components/Box';
import React, { Component } from 'react';

class Box extends Component{

}

export default Box;
另外,在旁注中,引用文件:

不用于生产,您不应该在中使用babel节点 生产。它不必要地繁重,由于 正在存储在内存中的缓存。你也会经常经历 启动性能损失,因为整个应用程序需要在 苍蝇


为什么不使用此处提到的任何构建系统

您不能在每个导入案例中禁用此功能。模块语法被传输或未被传输。通过阅读文档,看起来您可以执行
--忽略[regex]
。我会试试看。我有一个例子可以做到这一点:@elclanrs指出了文档,请看:其中有一个特定的部分。可能有帮助的链接是,和。通常,指定babel应该传输什么的模式会排除node_模块,因此您需要更改该模式或指定要处理的包。而不是将
components/box.js
放在同一个应用程序中。使用相同的文件创建节点_模块,然后从主应用程序导入该文件。Babel不会在node_模块中编译ES6文件。