【问题标题】:Getting ES6 to work in WebStorm让 ES6 在 WebStorm 中工作
【发布时间】:2016-07-22 20:47:40
【问题描述】:

关于如何在 WebStorm 10 上使用 ES6 有什么想法吗?

这是我到目前为止所做的:

  1. 安装了 Babel。
  2. 通过设置 > 工具 > 文件观察器激活 Babel。选中 Babel 复选框。
  3. 编辑配置 > 在启动文件观察器之前 > + 然后“运行文件观察器”。
  4. 设置代码为 ES6
  5. 更改了我的运行配置以使用已编译的版本。

然后创建了以下简单的代码:

require("babel/register");
function* count(n){
    console.log(n);
}

这段代码没有出现语法错误,这是应该的。 (确保 ES6 已开启的便捷方式)。

运行它(实际上是运行编译的版本),然后得到这个......

var marked0$0 = [count].map(regeneratorRuntime.mark);
                            ^
ReferenceError: regeneratorRuntime is not defined

为什么?如何让它用 Babel 预编译然后运行?再生器不应该用这条线来照顾吗:

require("babel/register");

(Windows 7,如果这很重要的话)。

【问题讨论】:

    标签: javascript webstorm


    【解决方案1】:

    Babel 的 require 钩子要求你有 BABEL_CACHE_PATH 环境变量。您可能还需要在 WebStorm 的 File Watcher 配置中指定它们。

    【讨论】:

    • 谢谢。我认为它可以在没有 BABEL_CACHE_PATH 的情况下工作,这是可选的。会试一试的。
    【解决方案2】:

    根据您描述的错误的性质,我认为您可能需要做两件事才能使其正常工作。

    1. npm install babel-core
    2. 添加--optional runtime作为babel调用的参数

    这是基于here 的详细描述。

    【讨论】:

      【解决方案3】:

      “require hook”仅适用于您注册后需要的文件,但不适用于注册 hook 本身的文件。

      所以这行得通:

      // index.js
      require('babel/register');
      require('./count');
      
      // count.js
      function* count(n){
        console.log(n);
      };
      

      【讨论】:

      • 这对我不起作用。它产生同样的错误。
      • @Dirk 我不得不承认我不使用 WebStorm(也不使用 Windows),但是从命令行运行时代码本身可以正常工作。
      猜你喜欢
      • 2020-10-29
      • 1970-01-01
      • 2015-04-27
      • 1970-01-01
      • 1970-01-01
      • 2015-05-02
      • 2018-06-21
      • 2016-12-19
      • 2017-09-21
      相关资源
      最近更新 更多