Javascript 如何编译导入的ES6节点模块?
我有一个用ES6编写的应用程序,我正在使用babel转换该应用程序中的所有文件。该应用程序还包括一个带有React组件的node_模块(也用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
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文件。