在 Babel 中导出 es6 class - 找不到模块

Export es6 class in Babel - Cannot find module

我在 SO 上看到了这两个答案:

我没有使用 Browserify,只是 Gulp 和 Node,只是想做个前言。


File/Folder结构:

./

./gulpfile.js

./_GULP

./_GULP/main_config.es6

./_GULP/_classes/Gcfg.es6


问题设置

我正在导出 class 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 post:

https://github.com/babel/babel/issues/849

我以为我做的一切都是正确的。我正在使用 WebStorm 并在保存 .es6 文件时将 "File Watcher" 设置为 运行 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)

问题

为什么我无法使用 es6 import/export 导出 Gcfg.es6 中的 class 并将其导入 main.es6?是否需要 polyfill(我正在加载 bable/polyfill)?是我的路径中有 _ 吗?我已经为此纠结太久了。

谢谢!

好吧,一方面你有:

import Gcfg from '_classes/Gcfg';

如果您要编译为 CommonJS 并且没有任何特殊设置,Node 将尝试加载 node_modules/_classes/Gcfg。你可能想要:

import Gcfg from './_classes/Gcfg';