javascript - Babel编译JS导入相对路径失败

标签 javascript node.js babeljs

我有一个用 ES2015 编写并使用 Babel 6 转译的 npm 包。ES2015 源代码在 /src 中。 , 在 /src/core 中分成模块, /src/commands , 等等。由于它是一个 CLI 工具,入口点在 /src/bin/app.js 中。 .如果我运行 babel-node src/bin/app.js它按预期工作。

理想情况下,我想全局安装此工具(如 grunt-cli ),因此我使用 babel src -o /lib/app.js 将整个包转译为单个有效的 JS (ES5) 文件.但是,如果我尝试运行该文件,它会在尝试从相对路径中获取模块时引发错误,并且无法找到这些模块,因为它们都合并到了 app.js 中。 .错误是:

$ node_modules/babel-cli/bin/babel-node.js lib/app
module.js:328
    throw err;
    ^

Error: Cannot find module '../commands/index'
    at Function.Module._resolveFilename (module.js:326:15)
    at Function.Module._load (module.js:277:25)
    at Module.require (module.js:354:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/usr/local/lib/node_modules/app/lib/app.js:19:14)
    at Module._compile (module.js:398:26)
    at Module._extensions..js (module.js:405:10)
    at Object.require.extensions.(anonymous function) [as .js] (/Users/me/dev/app/node_modules/babel-register/lib/node.js:138:7)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)

我的 .babelrc很简单:

{
  "presets": ["es2015"]
}

这应该有效,还是我需要配置更多 Babel?备份计划是简单地转译整个 /src文件夹到 /lib并发布所有内容,但单个文件会更好。

最佳答案

结果 Babel doesn't support this at the moment .它只是将文件连接在一起,因此相对路径导入将不起作用。

与其将 Babel 与路径解析插件一起使用,不如使用 Rollup。用Babel plugin .我创建了一个 simple project测试和演示设置。

关于javascript - Babel编译JS导入相对路径失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35219231/

相关文章:

javascript - 如何从服务器获取数据?使用区间运算符

javascript - 使电子邮件正则表达式以逗号分隔

node.js - $push 和 $set 数组中的相同子文档

react-native - 将 babel polyfill 添加到 React Native 项目

javascript - 设置 Webpack 和 Babel 的问题

webpack - 开 Jest 不解析 es6 : SyntaxError: Unexpected token import

javascript - 如何使整个屏幕变黑并突出显示菜单?

javascript - Yii 需要根据条件进行验证

javascript - AdGroupCriterionService 不会更改关键字文字

javascript - 使用nodejs向同一客户端发送不同的数据