【发布时间】:2016-01-05 11:56:12
【问题描述】:
我在 SO 上看到了这两个答案:
Exporting a class with ES6 (Babel)
Trying to export a class as a module ES6 babel
我没有使用 Browserify,只使用 Gulp 和 Node,只是想作为序言。
文件/文件夹结构:
./
./gulpfile.js
./_GULP
./_GULP/main_config.es6
./_GULP/_classes/Gcfg.es6
问题设置
我正在导出一个类Gcfg.es6 文件,如下所示:
export default class Gcfg {
constructor() {
this.rootDir = './';
this.latestDir = './_LATEST/';
this.srcFolder = './_SRC/';
...
}
getSrcDir(dir="") {
return this.srcFolder + dir;
}
...
}
在main_config.es6 我正在尝试导入:
import Gcfg from '_classes/Gcfg';
关注这个 GitHub 帖子:
https://github.com/babel/babel/issues/849
我认为我做的一切都是正确的。我正在使用 WebStorm 并有一个“文件观察器”设置来在保存 .es6 文件时运行 Babel。我没有在那里做任何花哨的事情,我使用的唯一可选标志是:
--source-maps 和--out-file $FileNameWithoutExtension$.js $FilePath$
$FileNameWithoutExtension$.js 是 WebStorm 应用程序变量,只是被观察者加载的文件,$FilePath$ 是文件的绝对路径。
所以命令看起来像这样(我相信我实际上没有看到它执行):
babel --source-maps --out-file main_config.js ./_GULP/ 等其他文件...
我相信所有文件都被 babel 处理得很好。我在生成的 JS 中看到了导出和要求。
tl;dr
在gulpfile.js我正在做:
gCfg = require('./_GULP/main_config');
但是,当我尝试运行 GULP 时,它立即失败,并且在控制台中我得到:
Error: Cannot find module '_classes/Gcfg'
at Function.Module._resolveFilename (module.js:336:15)
at Function.Module._load (module.js:286:25)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/Users/xxx/xxx/xxx/xxx/xxx/_GULP/main_config.js:9:20)
at Module._compile (module.js:434:26)
at Object.Module._extensions..js (module.js:452:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
问题
为什么我无法将Gcfg.es6 中的类导出并使用es6 import/export 将其导入main.es6?是否需要 polyfill(我正在加载 bable/polyfill)?是我的路径中有_ 吗?我只是在这个问题上挣扎了太久。
谢谢!
【问题讨论】:
标签: javascript gulp ecmascript-6 babeljs