Saya mendefinisikan kelas dalam modul:
"use strict";
var AspectTypeModule = function() {};
module.exports = AspectTypeModule;
var AspectType = class AspectType {
// ...
};
module.export.AspectType = AspectType;
Tetapi saya mendapatkan pesan kesalahan berikut:
TypeError: Cannot set property 'AspectType' of undefined
at Object.<anonymous> (...\AspectType.js:30:26)
at Module._compile (module.js:434:26)
....
Bagaimana cara mengekspor kelas ini dan menggunakannya di modul lain? Saya telah melihat pertanyaan SO lainnya, tetapi saya mendapatkan pesan kesalahan lain ketika saya mencoba menerapkan solusi mereka.
javascript
node.js
module
export
Jérôme Verstrynge
sumber
sumber
'use strict'
dalam modul atau kelas; ini adalah perilaku default. Ref. 10.2.1 Kode Mode KetatJawaban:
Jika Anda menggunakan ES6 di Node 4, Anda tidak dapat menggunakan sintaks modul ES6 tanpa transpiler, tetapi modul CommonJS (modul standar Node) berfungsi sama.
seharusnya
karenanya pesan kesalahan "Tidak dapat menyetel properti 'AspectType' dari tidak terdefinisi" karena
module.export === undefined
.Juga untuk
bisakah kamu menulis
dan pada dasarnya mendapatkan perilaku yang sama.
sumber
export
bukannyaexports
, bagaimana saya melewatkannya?module.exports = ClassName
dan berfungsi dengan baiksumber
Dengan ECMAScript 2015 Anda dapat mengekspor dan mengimpor beberapa kelas seperti ini
lalu di mana Anda menggunakannya:
Jika terjadi benturan nama, atau Anda lebih suka nama lain, Anda dapat mengganti namanya seperti ini:
sumber
Menggunakan
Kemudian untuk mengimpornya
Baca http://babeljs.io/docs/learn-es2015/#modules untuk detail selengkapnya
sumber
SyntaxError: Unexpected reserved word
, dapatkah Anda memberikan contoh kode lengkap?module.exports
import
/export
(masih berlaku, Mei 2017).ekspresi kelas dapat digunakan untuk kesederhanaan.
-
sumber
Saya hanya menulisnya seperti ini
di file AspectType:
dan impor seperti ini:
sumber
Beberapa jawaban lain hampir sama, tetapi sejujurnya, saya pikir Anda lebih baik menggunakan sintaks yang paling bersih dan paling sederhana. OP meminta cara mengekspor kelas di ES6 / ES2015. Saya tidak berpikir Anda bisa menjadi lebih bersih dari ini:
sumber
Saya memiliki masalah yang sama. Apa yang saya temukan adalah saya memanggil objek penerima saya dengan nama yang sama dengan nama kelas. contoh:
ini mengacaukan semuanya seperti itu ... semoga ini membantu
sumber
Kadang-kadang saya perlu mendeklarasikan beberapa kelas dalam satu file, atau saya ingin mengekspor kelas dasar dan tetap mengekspor namanya karena editor JetBrains saya memahami itu dengan lebih baik. Saya hanya menggunakan
Dan di tempat lain:
sumber