在 Node、Webpack 和 babel-loader 中使用 ES7 async/await 时出错

2024-01-08

我正在尝试使用带有 webpack 和 babel-loader (es2015 + stage-0 预设)的 node.js 在服务器上使用 javascript ES7 语法。我已经让它可以与 babel-node 一起使用,但是当我运行 webpack 时,我在 async 关键字处收到以下错误(9:22 在 async 关键字之后):

ERROR in ./src/server.js Module parse failed: C:\dev\node-async-sample\src\server.js 
Unexpected token (9:22) You may need an appropriate loader to handle this file type. 
SyntaxError: Unexpected token (9:22)

我已将代码放在 github 上https://github.com/qubitron/node-async-sample https://github.com/qubitron/node-async-sample,关于如何让它发挥作用有什么想法吗?

以下是 src/server.js 中的相关片段:

import express from 'express';
import http from 'request-promise';

let server = express();

server.get('/', async function(request, response) {
    let result = await http('http://www.google.com');
    response.send(result);
});

.babelrc:

{
  "presets": [
    "es2015",
    "node5",
    "stage-0"
  ],
  "plugins": [
    "transform-runtime"
  ]
}

和 webpack.config.js:

module.exports = {
  entry: [
    'babel-polyfill',
    './src/server.js'
  ],
  output: {
    path: __dirname + '/dist',
    filename: 'server_bundle.js'
  },
  resolve: {
      extensions: ['', '.js', '.jsx']
  },
  module: {
    loaders: [
      {
        test: /\.jsx?$/,
        include: __dirname + '/src',
        loader: 'babel-loader'
      }
    ]
  }
};

我在这里看到了类似的问题,但它有不同的错误消息,并在 babel:master 中修复:ES7 异步等待函数与 babel-loader 不工作 https://stackoverflow.com/questions/33579395/es7-async-await-functions-with-babel-loader-not-working


您的 src 路径不正确。你永远不应该(比如never:)) 使用字符串连接来连接路径path.join https://nodejs.org/api/path.html#path_path_join_path为了那个原因。

{
   test: /\.jsx?$/,
   include: path.join(__dirname, 'src'),
   loader: 'babel-loader'
}

顺便说一句,这将解决解析问题,但你仍然需要处理.json通过添加相应的扩展名来解析部分并使用来加载文件json-loader

{ test: /\.json$/, loader: 'json-loader' }

此外,您还需要处理丢失模块警告。例如fs and net.

所以我推荐你使用babel-cli https://babeljs.io/docs/usage/cli/预编译服务器代码。

babel src --out-dir dist
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Node、Webpack 和 babel-loader 中使用 ES7 async/await 时出错 的相关文章

随机推荐

  • 使用python检测关闭事件

    我有一个 Minecraft 基岩版服务器在我们的共享电脑上运行 我想通过 python 与它交互 然而 我遇到的一个问题是我的兄弟有时会重新启动我们的电脑或 Windows 更新 我需要知道如何检测关闭事件并在重新启动之前将关闭命令发送到
  • Html5 标题标签验证错误

    您好 我正在根据 html 5 验证我的源代码 但我收到此错误 现在知道如何解决它 这是错误 在此上下文中 不允许 XHTML 元素标题作为 XHTML 元素元的子元素 抑制该子树中的更多错误 有任何想法吗 在对 XML 规则严格的 XHT
  • %g 如何对浮点数进行四舍五入?

    当我使用时 g作为格式说明符printf 有时四舍五入到小数点后 2 位 有时到 3 位 有时到 4 位 它是如何做到的 实际上我们应该在哪里使用 g代替 f or e对于浮点数 The g格式说明符的舍入就像 f会做 但如果 f会导致4
  • 在 PHP 中查找仅包含特定字符集的数组元素

    我只需要查找具有一组特定字母以及该组字母之前或之后的任何字符的数组元素 我有这样的数组 sample array sten netff enet denet value array e n t 我需要从中找到值 sample数组有 e n
  • 应用程序无响应(ANR)执行服务android

    host activity 是我的包 host framework ServicePromemoria 是一个android 服务 这个错误是什么意思 这意味着您的服务正在执行相当长的操作 大多数 ANR 来自超过 5 秒的操作 并且是在
  • PHP + MYSQL 对 Duplicate KEY 仍然增加 INDEX KEY

    我的桌子有这种风格 ID EMAIL VERSION LASTUPDATE 其中 id 是自动增量并且主要 并且电子邮件是唯一的 因此 每次有人使用我的应用程序时 它都会获取用户电子邮件并尝试插入 如果电子邮件已存在 则会将该行更新为 ve
  • 自动重试 401 并使用 HttpClient 4.3 发送特定请求

    我在应用程序中使用特定的身份验证机制 登录应用程序将登录请求发送到特定的 url login 并获取存储在 cookie 中的会话令牌 服务器随时可以使令牌失效 其他请求将导致 401 我希望 HttpClient 自动检测 401 错误
  • UITableViewController 上的上边距

    我有一个 TabBarController 其中一个选项卡包含一个子视图 它是一个导航控制器 然后 我将继承 UITableViewController 的视图加载到导航控制器中 我的问题是 由于某种原因 表格视图开始位于导航控制器后面 而
  • vuejs 路由器 - 要求未定义

    我正在尝试从这个开始 https github com vuejs vue router https github com vuejs vue router 我已经克隆了该包 并按照说明进行构建 npm install npm run bu
  • 实体框架 6 中的多异步?

    这是我的代码 var banner context Banners ToListAsync var newsGroup context NewsGroups ToListAsync await Task WhenAll banner new
  • 在 Swift 4 中实现自定义解码器

    我想使用新的解码 XML 文档DecodableSwift 4 中引入的协议 但是 似乎没有符合该协议的 XML 解码器的现有实现Decoder协议 我的计划是使用 SWXMLHash 库来解析 XML 然后可能使XMLIndexer该库中
  • 为什么选择 React.Children.only?

    向反应专家提出快速问题 React Children only https reactjs org docs react api html reactchildrenonly是它的顶级 api 之一 react redux 非常常用
  • 是否可以通过AWS lambda连接到本地计算机托管的数据库

    我在 AWS 中启动了一个 RDS 实例 s3 和 EC2 并且使用 lambda 正确触发了它 现在我希望将 RDS 和 EC2 从 AWS 更改为本地计算机 我的 lambda 是从 s3 触发的 在AWS中如何通过lambda连接本地
  • 来自事件的流星地理定位方法

    我想获取 latLng 但只能在事件发生后获取 如何才能实现这一目标 我尝试过跟踪器等 但没有任何效果 唯一有效的是调用 Geolocation latLng 从事件之前的助手内部 这就是我希望它能发挥作用的方式 我对 Session se
  • Sones GraphDB 查询返回错误

    我在这里关注他们的教程 http developers sones de wiki doku php id quickreference 五分钟指南 http developers sones de wiki doku php id qui
  • CryptoJS 和 Closure 中的 SHA512 不一样

    我在一个简单的加密挑战中遇到了一些麻烦 我想做以下事情 获取 url 编码和 base64 编码的值 进行 url 解码 进行 Base64 解码 使用 Sha512 进行哈希处理 使用 CryptoJS 时 我使用以下代码 var par
  • 在 Shiny R 中保存用户输入的 LeafletProxy 结果

    在 Shiny R 中 我正在制作一个带有叠加层的地图应用程序 然后添加用户输入的叠加层 因此 当用户上传数据并看到带有标记的更新地图后 我希望用户能够将新地图下载为 html 文件 我将在下面对我正在做的事情做一个简化的演示 服务器 ui
  • 如何动态或在运行时设置 PropertyGrid 的 DefaultValueAttribute?

    我正在定义一个与以下命令一起使用的自定义类属性网格 http msdn microsoft com en us library aa302326 aspx控制 比如说 其中一个属性定义如下 CategoryAttribute Section
  • Rspec 和 Capybara 未定义的局部变量或方法“page”

    嗨 我尝试开始我的第一个 RoR 项目 但一开始就陷入困境 我的 Gemfile 中有水豚 gem group development test do gem byebug gem web console gem spring gem rs
  • 在 Node、Webpack 和 babel-loader 中使用 ES7 async/await 时出错

    我正在尝试使用带有 webpack 和 babel loader es2015 stage 0 预设 的 node js 在服务器上使用 javascript ES7 语法 我已经让它可以与 babel node 一起使用 但是当我运行 w