SyntaxError: 'import' und 'export' erscheinen können, nur mit "sourceType: Modul' - Warten Sie, was?
So betrachten Sie die folgenden zwei Dateien:
app.js
import Game from './game/game';
import React from 'react';
import ReactDOM from 'react-dom';
export default (absPath) => {
let gameElement = document.getElementById("container");
if (gameElement !== null) {
ReactDOM.render(
<Game mainPath={absPath} />,
gameElement
);
}
}
index.js
import App from './src/app';
Den gulpfile.js
var gulp = require('gulp');
var source = require('vinyl-source-stream');
var browserify = require('browserify');
var babelify = require("babelify");
var watch = require('gulp-watch');
gulp.task('make:game', function(){
return browserify({
entries: [
'index.js'
]
})
.transform('babelify')
.bundle()
.pipe(source('index.js'))
.pipe(gulp.dest('app/'));
});
Den Fehler:
gulp make:game
[13:09:48] Using gulpfile ~/Documents/ice-cream/gulpfile.js
[13:09:48] Starting 'make:game'...
events.js:154
throw er; //Unhandled 'error' event
^
SyntaxError: 'import' and 'export' may appear only with 'sourceType: module'
Es tut mir Leid, was? Was ist dieser Fehler? Was mache ich falsch?
- Siehe dieses Problem ist auf GitHub. Es scheint ein problem mit der Verwendung einer neueren version von Babel mit babelify.
- In meinem Fall, ich bin nicht mit babelify aber immer noch diese Fehlermeldung erhalten.
- In meinem Fall war ich immer diesen Fehler mit browserify und babelify, wenn Sie versuchen zu kompilieren, JS-Dateien, importiert TypeScript-Dateien, wie z.B. import * als Foo aus "./foo" (foo.ts). Das Update wurde übergeben
--extensions ".ts,.js"
zu den babelify verwandeln (also zu babel umfassen würde, die TS-Dateien in der Zusammenstellung) und--extension=.js --extension=.ts
zu browserify (so browserify lösen könnte die filepaths von import-Anweisungen). Beachten Sie, dass die babel -- - Erweiterungen-option scheint nicht dokumentiert zu werden, in die babel - Optionen-ich fand heraus, über es, hier.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Älteren Versionen von Babel, kam mit alles out of the box. Die neuere version erfordert, dass Sie installieren, je nachdem welche plugins Ihr setup benötigt. Zuerst müssen Sie die Installation der ES2015 preset.
Als Nächstes müssen Sie sagen, babelify verwenden die Vorgabe, die Sie installiert haben.
Quelle
import
undexport
. Nicht zu erwähnen, diese Frage ist über die Verwendung von Browserify, nicht Webpack.ESLint nativ nicht unterstützen, weil dies gegen die spec. Aber wenn Sie mit babel-eslint-parser dann in Ihrem eslint config-Datei, die Sie dies tun können:
JS:
Doc ref: https://github.com/babel/babel-eslint#configuration
Antwort bezog von hier : ignorieren eslint Fehler: 'import' und 'export' kann nur erscheinen auf der obersten Ebene
Für die richtige Zusammenstellung es2015-reagieren-code, den Sie installieren sollten einige Knoten Module:
Global
in Ihrem app-Verzeichnis:
Dann erstellen gulp task:
In ./öffentliche/dest/javascripts-Verzeichnis finden Sie zusammengestellt es5 app.js Datei.
Aus irgendeinem Grund, babelify 8.0.0 hat bei mir nicht funktioniert-entweder mit der es2015 oder env präsentiert. Allerdings als der 2018-07-10, die
esmify
plugin von mattdesl hat Arbeit für mich. Mein Testfall war der ExportSpinner
ausspin.js
als Fenster global. Mein Beispiel repo ist hier; wichtige details verfolgen.main.js
Test
In ein leeres Verzeichnis:
und akzeptieren Sie alle Standardeinstellungen, dann:
Test-HTML-Datei
Wenn es geladen wird, zeigt er ein spinner in der Mitte der Seite.
Hinweis: ich bin nicht verbunden mit mattdesl oder esmify.
Stieß ich auf den gleichen Fehler versucht zu importieren, die ein Modul aus
node_modules
dass die Ausfuhren in ES6-Stil. Nichts, der vorgeschlagen wurde, SO funktionierte für mich. Dann fand ich FAQ-Bereich auf babelify repo. Nach der Einsicht von dort werden die Fehler angezeigt, da Module ausnode_modules
sind nicht transpiled standardmäßig und ES6 Erklärungen wieexport default ModuleName
in Ihnen nicht verstanden werden, indem Knoten powered by Verbreitet.js-Stil Module.So, ich aktualisierte meine Pakete und dann
global
option ausgeführt babelify als eine Globale Transformation ohne Knoten alle Module, aber die, die ich war daran interessiert, wie angegeben auf der babelify repo-Seite:Hoffe, es hilft.
In .eslintrc müssen Sie angeben, die der parser-Optionen, zum Beispiel:
}
Bitte überprüfen Sie in der Dokumentation Anleitung von eslint.
Dieser Fehler kann verursacht werden, indem nicht wie tsify plugin zu kompilieren Typoskript in der gulp-task.
Beispiel
Finden Sie unter installation und Nutzung hier:
https://www.npmjs.com/package/tsify
in meinem Fall habe ich export statt Exporte.
ändern export zu Exporte.
export
.