babel 文件被复制而不被转换

IT技术 javascript babeljs
2021-02-09 01:07:27

我有这个代码:

"use strict";

import browserSync from "browser-sync";
import httpProxy from "http-proxy";

let proxy = httpProxy.createProxyServer({});

我已经安装babel-core,并babel-cli通过NPM全球。关键是当我尝试在我的终端上编译时:

babel proxy.js --out-file proxified.js

输出文件被复制而不是编译(我的意思是,它与源文件相同)。

我在这里错过了什么?

6个回答

Babel 是一个转换框架。在 6.x 之前,它默认启用了某些转换,但是随着 Node 版本的使用增加,这些版本本身支持许多 ES6 功能,可配置的事情变得更加重要。默认情况下,Babel 6.x 不执行任何转换。您需要告诉它要运行哪些转换:

npm install babel-preset-env

并运行

babel --presets env proxy.js --out-file proxified.js

或创建一个.babelrc包含

{
    "presets": [
        "env"
    ]
}

并像以前一样运行它。

env在这种情况下是一个预设,它基本上是说将所有标准 ES* 行为编译为 ES5。如果您正在使用支持某些 ES6 的 Node 版本,您可能需要考虑这样做

{
    "presets": [
        ["env", { "targets": { "node": "true" } }],
    ]
}

告诉预设只处理您的 Node 版本不支持的内容。如果您需要浏览器支持,您还可以在目标中包含浏览器版本。

请提出一个包含有关您的设置的所有信息的新问题,以便有人回答。
2021-03-18 01:07:27
这很有用。他们为什么不把这个放在文档中?全局安装 babel-preset 安全吗?
2021-03-22 01:07:27
根据PR#72,这篇文章的要点已作为信息框添加到设置页面一个很小的改进,但你必须从某个地方开始!谢谢洛根。
2021-03-24 01:07:27
@kidcapital 文档确实包含了这一点,但似乎只是作为旁注。我花了很多时间试图弄清楚如何在首次发布时正确配置 babel 6.0。
2021-04-05 01:07:27
如此多的约定优于配置......所以开箱即用的 Babel 什么都不做——只是复制文件?
2021-04-07 01:07:27

这些答案中的大多数已经过时了。@babel/preset-env并且"@babel/preset-react是您所需要的(截至 2019 年 7 月)。

我遇到了同样的问题,原因不同:

我尝试加载的代码不在包目录下,并且 Babel 默认不会在包目录外进行转译。

我通过移动导入的代码解决了这个问题,但也许我也可以在 Babel 配置中使用一些包含语句。

你能详细说明一下吗?我的前端代码也不是“在包目录下”,它工作正常。我的服务器代码包含“导入”,但 babel-cli 没有解决那些......
2021-03-16 01:07:27
我试图解决的问题是我的服务器文件被组织在几个文件夹中:我有servers.js,然后是/api/...stuff...当我从内存中运行时,每个“导入”或“需要”在这些文件中正在动态解析。当我从命令行运行 babel 时,我只输出一个文件,但不解析相对导入,所以我不能用它来运行我的服务器......
2021-03-16 01:07:27
嗯,不知道要详细说明什么?Babel 没有转译。尝试查看所有 Babel 配置的来源……
2021-04-04 01:07:27

首先确保您具有以下内容node modules

npm i -D webpack babel-core babel-preset-es2015 babel-preset-stage-2 babel-loader

接下来,将其添加到您的 Webpack配置文件 ( webpack.config.js) 中:

// webpack.config.js
...
module  :  {
  loaders  :  [
    {
      test    :  /\.js$/,
      loader  :  'babel',
      exclude :  /node_modules/,
      options :  {
        presets  :  [ 'es2015', 'stage-2' ] // stage-2 if required
      } 
    } 
  ]
}
...

参考:

祝你好运!

截至2020, Jan

第 1 步:安装Babel presets

yarn add -D @babel/preset-env @babel/preset-react

第 2 步:创建一个文件:babelrc.js并添加presets

module.exports = {
  // ...
  presets: ["@babel/preset-env", "@babel/preset-react"],
  // ...
}

第 3 步:- 安装babel-loader

yarn add -D babel-loader

第 4 步:- 在您的webpack.config.js:中添加加载程序配置

{
//...
  module: [
    rules: [
      test: /\.(js|mjs|jsx|ts|tsx)$/,
      loader: require.resolve('babel-loader')
    ]
  ]
//...
}

祝你好运...

@MuhammadAsad嗨,你可以尝试stage-2,而不是stage-0
2021-03-23 01:07:27
嗨 Akash,我有遗留的 React 应用程序,当我尝试使用 webpack 4 进行构建时,我们在 .js 文件扩展中使用了类型,它给了我错误的意外令牌等,之前我们正在使用 test: /\.jsx?$/, loader : 'babel', exclude: path.resolve(__dirname, "node_modules"), query: { plugins: ['transform-runtime'], presets: ['es2015', 'stage-0', 'react'], }请帮我解决我尝试过上述事情但没有运气的问题
2021-04-04 01:07:27