2016-05-10 22 views
2

Ich versuche, MobX in meinem Projekt zu verwenden, und ich versuche, Klasseneigenschaften zu verwenden. Allerdings, wenn ich browserify durchlaufe (mit Laravel's Elixir). Ich bekomme den Fehler Missing class properties transform. while parsing file. Gibt es etwas, das mir fehlt, um Klasseneigenschaften für die Arbeit mit browserify zu bekommen?Kann nicht browserify zu babel-plugin-transform-class-properties

Browserify Failed!: /Users/.../resources/assets/js/pages/Show/CampaignStore.js: Missing class properties transform. while parsing file: /Users/.../resources/assets/js/pages/Show/CampaignStore.js 
Missing class properties transform. 
    2 | 
    3 | class CampaignStore { 
> 4 | id = Math.random(); 
    | ^
    5 | @observable title = ''; 
    6 | @observable messages = []; 
    7 | 

Meine .babelrc Datei:

{ 
    "presets": [ 
    "es2015", 
    "react", 
    "stage-0" 
    ], 
    "plugins": ["transform-decorators-legacy", "transform-class-properties"] 
} 

Die Klasse

import { observable, computed } from 'mobx'; 

class CampaignStore { 
    id = Math.random(); 
    @observable title = ''; 
    @observable messages = []; 

    // ... 
} 

gulpfile.js

require('dotenv').config(); 
var elixir = require('laravel-elixir'); 

var HOST = process.env.SERVER || 'http://localhost'; 

elixir.config.js.browserify.transformers.push({ 
    name: 'babelify', 
    options: { 
     presets: ["es2015", "react", "stage-1"], 
     plugins: ["transform-class-properties"] 
    } 
}); 

elixir(function(mix) { 
    mix.browserify('pages/Show.js', 'public/js/bundles/show.js'); 

    mix.sass('clean.scss'); 

    mix.browserSync({ 
     proxy: HOST 
    }); 
}); 
+0

Können Sie überprüfen, welche eine der babel configs tatsächlich aufgenommen wird? .babelrc oder die in der Schluckakte? Sie müssen möglicherweise die Schluckdatei updaten, um stage-0 statt stage-1 zu verwenden und transform-decorators-legacy – mweststrate

+0

Danke für den Rat, ich habe nur die .babelrc-Datei versucht, dann nur die Optionen in der Schluckdatei, dann beides nichts funktioniert (ich habe auch versucht, die gulpfile auf stage-0 zu schalten). Ich habe die Dinge einfach auf webpack umgestellt und ohne Änderungen an der .babelrc-Datei funktioniert alles. Ich werde das offen halten, für den Fall, dass jemand in der Lage ist, eine Antwort für andere zu schreiben. – csm232s

+2

@ csm232s Konnten Sie das Problem lösen? Ich führe das selbe Setup aus wie du (Laravel-Elixier mit browserify) und kannst den Transformationsfehler der fehlenden Klasseneigenschaften nicht loswerden, obwohl ich die "transform-class-properties" als Plugin eingefügt habe. –

Antwort

1

Sie außer Kraft setzen sollte genau babelify Transformator:

elixir.config.js.browserify.transformers 
    .find(transformer => transformer.name === 'babelify') 
    .options = { 
    presets: ['es2015', 'react', 'stage-1'], 
    plugins: ['transform-class-properties'], 
    }; 

oder einfach nur die gleiche babel-Konfigurationsdatei verwenden:

elixir.config.js.browserify.transformers 
    .find(transformer => transformer.name === 'babelify') 
    .options = require('./package.json').babel; 
+0

Diese Antwort hat bei mir funktioniert, danke – antongorodezkiy