在 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';
我在 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';