Saya mencoba menjalankan beberapa kode ES6 di proyek saya, tetapi saya mendapatkan kesalahan token ekspor yang tidak terduga.
export class MyClass {
constructor() {
console.log("es6");
}
}
javascript
ecmascript-6
webpack
babel
Jason
sumber
sumber
export
hanya tersedia di ES6, dan modul-modul itulah yang menyediakan dukungan ES6.module.exports = MyClass
, bukanexport class MyClass
Jawaban:
Anda menggunakan sintaks Modul ES6.
Ini berarti lingkungan Anda (misalnya node.js) harus mendukung sintaks Modul ES6.
NodeJS menggunakan sintaks Modul CommonJS (
module.exports
) bukan sintaks modul ES6 (export
kata kunci).Larutan:
babel
paket npm untuk mengubah ES6 Anda kecommonjs
targetatau
Contoh dari sintaks CommonJS adalah (dari flaviocopes.com/commonjs/ ):
exports.uppercase = str => str.toUpperCase()
exports.a = 1
sumber
import
secara asli? Saya pikir v10.0.0 akan memilikinya tetapi ternyata tidak.Jika Anda mendapatkan kesalahan ini, itu mungkin juga terkait dengan bagaimana Anda memasukkan file javascript ke halaman html Anda. Saat memuat modul, Anda harus mendeklarasikan file-file tersebut secara eksplisit. Berikut sebuah contoh:
Ketika Anda memasukkan skrip seperti ini:
Anda akan mendapatkan kesalahan:
Anda harus memasukkan file dengan atribut type yang disetel ke "module":
Dan itu akan berfungsi seperti yang diharapkan dan Anda siap untuk mengimpor modul Anda di modul lain:
sumber
type
diharapkan menjadi tipe mime yang valid (alias. tipe media), jadi ini merupakan penemuan yang tidak terduga. Terima kasih!<script type="module">import ...</script>
, ketika Anda mengimpor dari modul. Saya mengujinya di Chromium versi terbaru.Dua sen saya
Ekspor
ES6
Alternatif CommonJS
Ekspor Default
ES6
Alternatif CommonJS
Semoga ini membantu
sumber
Untuk menggunakan ES6 add
babel-preset-env
dan di Anda
.babelrc
:Jawaban diperbarui berkat komentar @ghanbari untuk menerapkan babel 7.
sumber
babel
oleh penulis. Sementara Phil Ricketts menjawab tidak mengklarifikasi masalah, mana yang baik, jawaban ini adalah solusi langsung untuk masalah penulis.Tidak perlu menggunakan Babel saat ini (JS menjadi sangat kuat) ketika Anda cukup menggunakan ekspor modul JavaScript default. Lihat tutorial lengkap
Message.js
app.js
sumber
Instal paket babel
@babel/core
dan@babel/preset
yang akan mengubah ES6 menjadi target commonjs karena node js tidak memahami target ES6 secara langsungnpm install --save-dev @babel/core @babel/preset-env
Maka Anda perlu membuat satu file konfigurasi dengan nama
.babelrc
di direktori root proyek Anda dan menambahkan kode ini di sana{ "presets": ["@babel/preset-env"] }
sumber
Saya memperbaikinya dengan membuat file entry point seperti.
dan semua file yang saya impor di dalam
app.js
dan di luar berfungsi denganimports/exports
sekarang Anda hanya menjalankannya sepertinode index.js
Catatan: jika
app.js
digunakanexport default
, ini menjadirequire('./app.js').default
saat menggunakan file titik masuk.sumber
Menggunakan sintaks ES6 tidak berfungsi dalam node, sayangnya, Anda harus memiliki babel untuk membuat kompiler memahami sintaksis seperti ekspor atau impor.
Sekarang kita perlu membuat file .babelrc, dalam file babelrc, kita akan mengatur babel untuk menggunakan preset es2015 yang kita instal sebagai preset ketika dikompilasi ke ES5.
Di root aplikasi kami, kami akan membuat file .babelrc. $ npm install babel-preset-es2015 --save
Di root aplikasi kami, kami akan membuat file .babelrc.
Semoga berhasil ... :)
sumber