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

时间:2016-02-24 20:42:57

标签: javascript node.js reactjs babeljs

我有一个用ES6编写的应用程序,我使用babel来转换该应用程序中的所有文件。这个应用程序还包括一个带有React组件的node_module(也是用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_modules。这是有道理的,因为大多数节点模块都是以commonjs格式编写的。有没有办法将这个特定的节点模块列入白名单,以便进行转换?

1 个答案:

答案 0 :(得分:0)

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

我尝试运行以下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';

components/box.js

import React, { Component } from 'react';

class Box extends Component{

}

export default Box;

另外,在旁注上,引用文档:

  

不适合生产使用你不应该使用babel-node   生产。这是不必要的沉重,由于高内存使用率   缓存存储在内存中。你也将经历一个   整个应用程序需要编译时启动性能损失   苍蝇。

为什么不使用此处提到的任何构建系统https://babeljs.io/docs/setup/

相关问题