尝试在ES6中使用导入/导出(通过babel编译)

时间:2018-12-17 22:24:13

标签: javascript ecmascript-6 module babel

以下是我的应用程序文件,这些文件使用babel将main.js中的ES6编译为main.bundle.js中的ES5

enter image description here

这是我的babel.rc文件(隐藏):

{
    "presets": ["@babel/preset-env"]
}

这是我的package.json文件,其中包含我所有的节点模块(devDependencies):

{
  "name": "es6-tutorial",
  "version": "1.0.0",
  "description": "ES6 tutorial",
  "main": "index.js",
  "scripts": {
    "babel": "babel js/main.js -o build/main.bundle.js",
    "start": "http-server",
    "watch": "babel js/main.js -o build/main.bundle.js --watch"
  },
  "author": "me",
  "license": "ISC",
  "devDependencies": {
    "@babel/preset-env": "^7.2.0",
    "babel-cli": "^6.26.0",
    "babel-core": "^6.26.3",
    "babel-preset-es2015": "^6.24.1",
    "http-server": "^0.11.1"
  }
}

现在立即开始从ES6到ES5进行编译,我导航(cd)到该目录的根目录,并设置了一个手表以自动编译(npm run watch

工作正常,除了现在我要在myFunctions.js中具有要导出并导入main.js的功能

添加此导出/导入时,我注意到编译后的文件main.bundle.js添加了以下内容:

`var _myFunctions = require('myFunctions.js');`

然后,当我去运行应用程序时,在控制台中出现错误:

`Uncaught ReferenceError: require is not defined
at main.bundle.js:9`

在研究了这一点之后,我认为我需要为Babel添加某种插件:https://babeljs.io/docs/en/plugins#modules以处理导出/导入(是吗?),但是我不确定应该使用哪个插件,我尝试了一些,但在npm安装后我什么都无法工作。

我还知道我不需要添加require.js库吗?

0 个答案:

没有答案