Inisialisasi properti singkat singkatan

165

Saya menulis kode berikut dalam JavaScript untuk proyek simpul, tetapi saya mengalami kesalahan saat menguji modul. Saya tidak yakin apa artinya kesalahan itu. Ini kode saya:

var http = require('http');
// makes an http request
var makeRequest = function(message) {
 var options = {
  host: 'localhost',
  port = 8080,
  path : '/',
  method: 'POST'
 }
 // make request and execute function on recieveing response
 var request = http.request(options, function(response) {
  response.on('data', function(data) {
    console.log(data);
  });
 });
 request.write(message);
 request.end();
}
module.exports = makeRequest;

Ketika saya mencoba menjalankan modul ini, modul ini melakukan kesalahan berikut:

$ node make_request.js
/home/pallab/Desktop/make_request.js:8
    path = '/',
    ^^^^^^^^^^
SyntaxError: Invalid shorthand property initializer
    at Object.exports.runInThisContext (vm.js:76:16)
    at Module._compile (module.js:542:28)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:149:9)
    at bootstrap_node.js:509:3

Saya tidak mengerti apa artinya ini, dan apa yang bisa saya lakukan untuk menyelesaikan ini.

Pallab Ganguly
sumber

Jawaban:

443

Karena ini merupakan objek, cara untuk menetapkan nilai ke propertinya menggunakan :.

Ubah =to :untuk memperbaiki kesalahan.

var options = {
  host: 'localhost',
  port: 8080,
  path: '/',
  method: 'POST'
 }
Diego Faria
sumber
Itu berhasil, tapi saya pikir Anda menggunakan = untuk menyimpan nomor dan: untuk string
Pallab Ganguly
1
Lihat dokumen penginisialisasi objek untuk mempelajari cara menginisialisasi literal objek dalam javascript. Khususnya sesi yang disebut Membuat objek .
Diego Faria
7
Saya pikir Anda gunakan =untuk menyimpan nomor dan :untuk string saya bertanya-tanya di mana Anda akan mendapatkan ide itu.
2
Arghh! Saatnya mengambil kopi. Terima kasih. :)
ArendE
5

Kesalahan ini biasanya terjadi ketika Anda mencoba untuk menetapkan objek dengan tanda Equal to (=) daripada tanda titik dua (:)

Kode yang benar harus seperti: -

var options = {
  host: 'localhost',
  port: 8080,
  path: '/',
  method: 'POST'
 }
Nitin Nema
sumber
3

Dalam objek pilihan Anda telah menggunakan tanda "=" untuk menetapkan nilai ke port tetapi kita harus menggunakan ":" untuk menetapkan nilai ke properti di objek saat menggunakan objek literal untuk membuat objek yaitu "{}", kurung keriting ini. Bahkan ketika Anda menggunakan ekspresi fungsi atau membuat objek di dalam objek Anda harus menggunakan tanda ":". untuk misalnya:

    var rishabh = {
        class:"final year",
        roll:123,
        percent: function(marks1, marks2, marks3){
                      total = marks1 + marks2 + marks3;
                      this.percentage = total/3 }
                    };

john.percent(85,89,95);
console.log(rishabh.percentage);

di sini kita harus menggunakan koma "," setelah setiap properti. tetapi Anda dapat menggunakan gaya lain untuk membuat dan menginisialisasi objek.

var john = new Object():
john.father = "raja";  //1st way to assign using dot operator
john["mother"] = "rani";// 2nd way to assign using brackets and key must be string
r.jain
sumber
1

Gunakan :sebagai ganti=

lihat contoh di bawah ini yang memberikan kesalahan

app.post('/mews', (req, res) => {
if (isValidMew(req.body)) {
    // insert into db
    const mew = {
        name = filter.clean(req.body.name.toString()),
        content = filter.clean(req.body.content.toString()),
        created: new Date()
    };

Itu memberikan Syntex Error: initializer proprty steno singkatan.

Lalu saya ganti = dengan :yang memecahkan kesalahan ini.

app.post('/mews', (req, res) => {
if (isValidMew(req.body)) {
    // insert into db
    const mew = {
        name: filter.clean(req.body.name.toString()),
        content: filter.clean(req.body.content.toString()),
        created: new Date()
    };
akshay_sushir
sumber
-2

Ada kesalahan sintaksis dalam optionsinisialisasi variabel Anda . Anda harus menggunakan port: 8080bukan port = 8080.

Mahesa daniswara
sumber
Jawaban ini harus berupa komentar, bukan jawaban :)
Pipetus