Saya bekerja dengan node.js, dan di salah satu file js saya saya gunakan const
di "strict mode"
. Saat mencoba menjalankannya, saya mendapatkan kesalahan:
SyntaxError: Use of const in strict mode.
Apa praktik terbaik untuk melakukan ini?
Edit:
'use strict'
const MAX_IMAGE_SIZE = 1024*1024; // 1 MB
javascript
node.js
Vivek P
sumber
sumber
var
. Tambahkan semikolon'use strict';
Jawaban:
Itu
const
danlet
merupakan bagian dari ECMAScript 2015 (alias ES6 dan Harmony), dan tidak diaktifkan secara default di Node.js 0.10 atau 0.12. Karena Node.js 4.x, “Semua fitur pengiriman [ES2015], yang dianggap stabil oleh V8, diaktifkan secara default di Node.js dan TIDAK memerlukan jenis bendera runtime.”. Node.js docs memiliki ikhtisar tentang fitur-fitur ES2015 yang diaktifkan secara default, dan yang memerlukan bendera runtime . Jadi dengan memutakhirkan ke Node.js 4.x atau lebih baru kesalahannya akan hilang.Untuk mengaktifkan beberapa fitur ECMAScript 2015 (termasuk
const
danlet
) di Node.js 0.10 dan 0.12; mulai program simpul Anda dengan tanda harmoni, jika tidak, Anda akan mendapatkan kesalahan sintaksis. Sebagai contoh:Itu semua tergantung pada sisi mana js ketat Anda berada. Saya akan merekomendasikan menggunakan mode ketat dengan
const
deklarasi di sisi server Anda dan mulai server dengan bendera harmoni. Untuk sisi klien, Anda harus menggunakan Babel atau alat serupa untuk mengubah ES2015 menjadi ES5, karena tidak semua browser klien mendukungconst
deklarasi.sumber
'use strict';
diri Anda sendiri, tetapi biarkan kode pihak ketiga memutuskan sendiri.Jika ini terjadi di nodejs, itu karena versi yang lebih lama dari nodejs. Perbarui simpul dengan menggunakan,
1) Bersihkan cache NPM:
2) Instal pembantu kecil yang disebut 'n'
3) Instal versi NodeJS stabil terbaru
Perbarui instruksi nodejs yang diambil dari, https://stackoverflow.com/a/19584407/698072
sumber
node
versi. Misalnya, pada saat penulisan ini,sudo n 6.9.4
akan menginstal LTS terbaru, di manasudo n stable
akan menginstal7.4.0
. Jelas, itu adalah perubahan besar, jadi berhati-hatilahn stable
. Atau,sudo n lts
instal LTS terbaru.Biasanya kesalahan ini terjadi ketika versi node yang menjadi kode dieksekusi lebih tua dari yang diharapkan. (yaitu 0,12 atau lebih tua).
jika Anda menggunakan nvm daripada harap pastikan bahwa Anda memiliki versi yang tepat dari node yang digunakan. Anda dapat memeriksa kompatibilitas pada node.green untuk const dalam mode ketat
Saya menemukan masalah serupa pada posting lain dan memposting jawaban saya di sana secara rinci
sumber
/usr/bin/node
folder saya , yang memiliki 0.10.46.Satu langkah penting setelah Anda memperbarui simpul Anda adalah untuk menautkan biner simpul Anda ke versi simpul terinstal terbaru
sumber
which node
node --version
mencetak nomor versi, mis.v0.10.29
Ini mungkin bukan solusi untuk semua orang, tetapi itu untuk saya.
Jika Anda menggunakan NVM, Anda mungkin belum mengaktifkan versi simpul yang tepat untuk kode yang Anda jalankan. Setelah Anda reboot, versi default node Anda kembali ke standar sistem.
Sedang mengalami ini ketika bekerja dengan reaksi-asli yang telah bekerja dengan baik. Cukup gunakan nvm untuk menggunakan versi simpul yang tepat untuk menyelesaikan masalah ini.
sumber
nvm use version-number-you-need
yang harus kamu lakukan.Sejak saat pertanyaan diajukan, konsep
const
kata kunci sudah menjadi standar hidup sebagai bagian dari ECMAScript 2015 . Juga versi Node.js saat ini mendukung deklarasi const tanpa--harmony
flag.Dengan kata di atas Anda sekarang dapat menjalankan
node app.js
, denganapp.js
:mendapatkan baik sintaksis gula dan manfaat dari mode ketat.
sumber
MB
adalah kekuatan sepuluh, sedangkan mebibyteMiB
adalah kekuatan dua. yaitu1MB = 1e6
dan1MiB = 1024 * 1024
. Lihat wikipedia: MebibyteSaya memiliki masalah serupa baru-baru ini dan berakhir di T&J ini. Ini bukan solusi yang dicari OP tetapi dapat membantu orang lain dengan masalah serupa.
Saya menggunakan PM2 untuk menjalankan proyek dan di server pementasan yang diberikan saya memiliki versi Node, NPM dan PM2 yang sangat lama. Saya memperbarui semuanya, namun saya tetap menyimpan kesalahan yang sama:
Saya mencoba untuk berhenti dan memulai aplikasi beberapa kali. Juga mencoba memperbarui semuanya lagi. Tidak ada yang berhasil. Sampai saya melihat peringatan ketika saya berlari
pm2 start
:Kena kau! Setelah berjalan
pm2 update
, saya akhirnya bisa menjalankan aplikasi seperti yang diharapkan. Tidak ada kesalahan "const dalam mode ketat" lagi.sumber
const tidak didukung oleh ECMAScript. Jadi setelah Anda menentukan mode ketat, Anda mendapatkan kesalahan sintaksis. Anda perlu menggunakan var alih-alih const jika Anda ingin kode Anda kompatibel dengan semua browser. Saya tahu, bukan solusi yang ideal, tetapi ini adalah apa adanya. Ada cara untuk membuat properti hanya baca di JavaScript (lihat Dapatkah Properti Hanya Baca diimplementasikan dalam JavaScript Murni? ) Tapi saya pikir ini mungkin berlebihan tergantung pada skenario Anda.
Di bawah ini adalah catatan kompatibilitas browser dari MDN :
Kompatibilitas browser
sumber
const
didukung dalam ECMAScript 6 dan didukung secara luas: kangax.github.io/compat-table/es6/#const Tapi Anda benar dalam jawaban Anda -'use strict';
danconst
tidak bercampur.const
ini dapat dideklarasikan ulang di Safari 7 tetapi tidak di Opera 21, Chrome 35 dan Firefox 29.Penggunaan
const
dalam mode ketat tersedia dengan rilis Chrome 41. Saat ini, Chrome 41 Beta sudah dirilis dan mendukungnya.sumber
sumber
npm install -g nave; nave use 6.11.1
+1