【问题标题】:Error: Couldn't find preset "es2015" relative to directory "/Users/username"错误:找不到相对于目录“/Users/username”的预设“es2015”
【发布时间】:2016-01-15 20:38:05
【问题描述】:

尝试使用 gulp-babel 时出现以下错误:

错误:找不到相对于目录的预设“es2015” "/用户/用户名"

我在全局和本地安装了 es2015 预设,所以不明白为什么会出现问题。

下面是我的 gulp 设置和 package.json。

var babel = require('gulp-babel');
var es2015 = require('babel-preset-es2015');

gulp.task('babel', function() {
    return gulp.src('./app/main.js')
    .pipe(babel({
        presets: [es2015]
    }))
    .pipe(gulp.dest('dist'));
});

包.json

  "devDependencies": {
    "babel-preset-es2015": "^6.3.13",
    "babel-preset-es2015-node5": "^1.1.1",
    "browser-sync": "^2.11.0",
    "gulp": "^3.9.0",
    "gulp-babel": "^6.1.1",
    "gulp-stylus": "^2.2.0"
  }

我正在使用 node v5.1.0 和 babel v6.4.0

这是终端输出

terminal output

【问题讨论】:

  • 我认为你需要在presets 数组中传递一个字符串,比如['es2015'],不过我不太确定
  • @thefourtheye 谢谢,但问题与字符串相同。
  • 你不需要 gulp。也许这可能是原因var gulp = require('gulp');
  • @AndreiCacio 我已经将 gulp 包含在了代码 sn-p 中。我只包含了与 babel 编译器相关的代码。
  • 您的主目录中是否有一个.babelrc 文件?由于这是它正在寻找预设的地方,这意味着这是配置的来源。

标签: javascript node.js ecmascript-6 gulp babeljs


【解决方案1】:

你只需要安装babel-preset-es2015

CLI 使用示例:

npm install babel-cli babel-preset-es2015

【讨论】:

  • 这为我解决了它......哇,多么可怕的错误消息:错误:找不到相对于目录“/path/to/node/package/attemping/to/”的预设“es2015” install" ... 在尝试安装一些使用 gulp 和 babel 的随机 npm 包时尤其痛苦
  • npm WARN 已弃用 babel-preset-es2015@6.24.1:? 感谢您使用 Babel:我们建议现在使用 babel-preset-env:请阅读 babeljs.io/env 进行更新!
  • 非常感谢这个惊人的解决方案。
【解决方案2】:

要解决此问题,您应该从“/Users/username”目录中删除 .babelrc(隐藏)文件。

【讨论】:

  • 完美。这确实是一个非常隐蔽的问题。帮我解决了
  • 这个答案救了我。
【解决方案3】:

“es2015”在:

    .pipe(babel({
        presets: ['es2015']
    }))

实际上是一个路径 - 所以如果您在 /Users/username/es2015 目录中没有预设,您必须准确地指向它,例如:

.pipe(babel({
    presets: ['../../gulp/node_modules/babel-preset-es2015']
}))

对我有用

【讨论】:

  • 使用“babel-preset-es2015”文件夹的绝对路径也为我工作
  • 这可能看起来过于简单,所以我只是将其添加为评论,但请确保您拼写正确。我的标签是“es2105”,数字调换了,这让我摸不着头脑。
【解决方案4】:

我刚刚使用了这个确切的 gulpfile.js

var babel = require('gulp-babel');
var es2015 = require('babel-preset-es2015');
var gulp = require('gulp');

gulp.task('babel', function() {
    return gulp.src('./app/main.js')
    .pipe(babel({
        presets: [es2015]
    }))
    .pipe(gulp.dest('dist'));
});

它对我有用。我只安装了babelbabel-preset-es2015gulp-babel

【讨论】:

  • 你能告诉我你的 babel 和 node.js 版本吗?我的设置和你看到的一样。但仍然是同样的错误
  • 我使用的是 node 4.0 和 babel 6
  • 更新了终端输出的描述
  • 这可能是与 Windows 相关的问题或类似的问题。我找到了一个类似的帖子,您可以查看:github.com/laravel/elixir/issues/354 也许它会解决这个问题。
  • 明确加载babel-preset-es2015,如此处所示解决了我的问题。
【解决方案5】:

检查您的项目的根文件夹中是否有 .babelrc 文件。如果不创建 .babelrc 文件并添加以下内容:

{
  "presets": ["es2015"]
}

它解决了这个问题。

【讨论】:

  • 拯救了我的一天!谢谢
【解决方案6】:

您可以尝试通过安装es2015stage-2

npm i babel-preset-es2015 --save
npm i babel-preset-stage-2 --save

【讨论】:

    【解决方案7】:

    我遇到了同样的问题,这是因为我的目录根目录中有一个.babelrc 文件。

    要解决此问题,请在 babel 选项中添加 babelrc: false

    var babel = require('gulp-babel');
    
    gulp.task('babel', function() {
        return gulp.src('./app/main.js')
        .pipe(babel({
            babelrc: false,
            presets: ['babel-preset-es2015']
        }))
        .pipe(gulp.dest('dist'));
    });
    

    【讨论】:

    • +1 我在我的根目录中找到了一个.babelrc 文件,这就是问题所在。配置babelrc: false 似乎不起作用,但是当我删除一切正常时!
    【解决方案8】:

    我遇到了同样的问题,第二个建议帮助我注意到了我的问题,也许它也是你的问题。

    npm install gulp-babel-es2015 然后根本没有将它包含在 gulpfile 中。

    那么babel({presets: ['es2015']}) 选项只是一个字符串,如这里的示例所示https://www.npmjs.com/package/gulp-babel

    这是我的 gulpfile。

    var gulp = require('gulp'),
        babel = require('gulp-babel');
    
    gulp.task('babelify', () => {
        gulp.src('js/*.js')
            .pipe(babel({
                presets: ['es2015']
            }))
        .pipe(gulp.dest('alljs'));
    });
    
    gulp.task('default', ['babelify']);

    另外,从这里的这个问题开始,https://github.com/laravel/elixir/issues/354

    建议您应该将 node 更新到版本 5.x.x 和 npm 到 3.x.x。

    【讨论】:

      【解决方案9】:

      我遇到这个问题的情况是我将文件从xxx移动到xxx/server。然后在xxx/server 下我会看到Error: Couldn't find preset "es2015" relative to directory "/Users/username/xxx" 错误。 真正的原因是我忘记将.babelrc 文件移动到xxx 下。在我将 .babelrc 移动到 xxx/server 之后,错误就消失了。

      【讨论】:

        【解决方案10】:

        我刚刚有一个非常奇怪的。我用一个很长的npm install 命令安装了所有的 babel 工具,并且安装的所有东西都没有错误……除了它在运行时抛出了这个线程中记录的错误。

        我注意到 package.json 文件中的版本是 0.0.0,所以我再次运行 npm install --save-dev babel-preset-es2015,它工作并将 SECOND 密钥放入我的 package.json 文件中:

           "devDependencies": {
             "babel-cli": "^6.24.1",
             "babel-core": "^6.24.1",
             "babel-polyfill": "^6.23.0",
             "babel-preset-es2015": "^6.24.1",
             "babel-preset-es2015": "0.0.0",
             "babel-preset-stage-2": "^6.24.1",
             "eslint": "^3.19.0"
           }
        

        我刚刚删除了拙劣的条目,它清除了这个 relative to directory 错误。

        【讨论】:

          【解决方案11】:

          我的问题是其他程序正在使用编译过程中涉及的文件(可能是 .babelrc)。关闭几个应用程序解决了我的问题。

          对我来说,Dropbox 甚至是带有 eqFTP 扩展的括号编辑器。

          问候

          【讨论】:

            【解决方案12】:

            通天塔 7 更新

            docs 开始,您现在应该使用 @babel/preset-env 而不是任何其他 preset 提及

            “env”预设已经推出一年多,完全取代了我们之前拥有/建议的一些预设。

            • babel-preset-es2015
            • babel-preset-es2016
            • babel-preset-es2017
            • babel-preset-latest
            • 以上组合 ^
            yarn add @babel/preset-env
            

            npm install @babel/preset-env
            

            【讨论】:

              猜你喜欢
              • 2016-11-23
              • 2016-08-27
              • 2017-03-04
              • 2016-03-24
              • 1970-01-01
              • 2018-01-26
              • 2019-08-15
              • 2019-03-23
              相关资源
              最近更新 更多