Rumah  >  Artikel  >  pembangunan bahagian belakang  >  ralat penunjuk tiada apabila cuba memulakan pelayan yang tidak dimulakan dari httptest

ralat penunjuk tiada apabila cuba memulakan pelayan yang tidak dimulakan dari httptest

WBOY
WBOYke hadapan
2024-02-12 19:33:21563semak imbas

尝试从 httptest 启动未启动的服务器时出现 nil 指针错误

editor php Strawberry akan menjawab soalan biasa untuk semua orang: "Ralat penunjuk tiada berlaku semasa cuba memulakan pelayan yang tidak dimulakan daripada httptest". Semasa melakukan ujian HTTP, kadangkala kami mungkin menghadapi ralat ini. Ini kerana httptest cuba menyambung ke pelayan yang belum dimulakan, mengakibatkan ralat penunjuk nil. Sebelum menyelesaikan masalah ini, kita memerlukan sedikit pengetahuan latar belakang.

Kandungan soalan

Saya cuba membina pelayan https olok-olok dalam kod saya. Saya ingin menyatakan nombor port, jadi saya menggunakan kod berikut:

l, _ := net.listen("http", "localhost:49219")
svr := httptest.newunstartedserver(http.handlerfunc(func(w http.responsewriter, r *http.request) { ... }))
svr.listener.close()
svr.listener = l
svr.start()

Walau bagaimanapun, pada baris svr.start(), saya mendapat mesej ralat:

panic: runtime error: invalid memory address or nil pointer dereference [recovered]
panic: runtime error: invalid memory address or nil pointer dereference

Jelas sekali svr bukan sifar pada masa ini. Saya ingin tahu mengapa ralat ini berlaku dan bagaimana saya harus membetulkannya?

Penyelesaian

  • Panggil net.listen 函数时需要更新第一个参数(行:l, := net.listen("http", "localhost:49219").

  • mestilah tcptcp4tcp6unixunixpacket,而不是 http.

  • untukipv4,您可以使用tcp4.

Contoh:

65bd95abbd7c

Atas ialah kandungan terperinci ralat penunjuk tiada apabila cuba memulakan pelayan yang tidak dimulakan dari httptest. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam