【NodeJS 教學】NodeJS後端程序怎麼知道用戶瀏覽的頁面? (NodeJS GET請求 入門教學) | How to handle GET requests in NodeJS server

Поделиться
HTML-код
  • Опубликовано: 27 дек 2024

Комментарии • 106

  • @kevinfeng9130
    @kevinfeng9130 3 года назад +16

    博主真的非常有耐心,完全从初学者的角度触发,教学的同时还不忘讲解一些细枝末节但有必要的东西。

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад +1

      谢谢你的留言,真心希望这些教学对你有帮助,加油!

  • @Bobeenliu
    @Bobeenliu 2 года назад +2

    必须每一个视频都留言鼓励一下 po主真的很用心 对于我们这些初学者来说 太有用了

  • @wangemma8704
    @wangemma8704 11 месяцев назад +1

    讲解视频做的太棒了!简单易懂~😀

  • @user-on4zu7dq3x
    @user-on4zu7dq3x 9 месяцев назад +1

    請問老師13:42的readfile callback的error參數,什麼時候才會觸發if (error) 內的語句?老師的說明是讀取文件發生錯誤就會走這條路,但像影片最後用了hello.html,都是返回404 page not found,而非sorry, internal error. 但hello.html文件不存在,為何不會發生error?

    • @user-on4zu7dq3x
      @user-on4zu7dq3x 9 месяцев назад

      啊,我懂了,因為是http.createServer的if (method === 'GET')之後確認url的if-else if- else語句裡面才會執行sendResponse函式,而fs.readFile在sendResponse函式裡面。
      當我訪問任何頁面都是在執行http.createServer,即便html文件不存在,都會走else { sendRes('404.html', 404, res); } ,所以當文件不存在,請求的頁面data永遠是404.html
      若要看到sorry, internal error.,就要連404.html文件都不存在才會出現。

  • @perberhsin4601
    @perberhsin4601 3 года назад +2

    WenXuan老师教学很细,刚看完两集,准备把您的NodeJS系列看完

  • @whatislove4587
    @whatislove4587 2 года назад +1

    呜呜,很有帮助哦,清晰易懂,我个小小白都看懂了,感谢💮

  • @Carol-ll3po
    @Carol-ll3po 3 года назад +3

    簡潔有力! 看了 3 epi終於明白了 nodejs server的運作了 >.

  • @林明華-z1z
    @林明華-z1z 4 года назад +3

    感謝您無私的教學,謝謝您.

  • @mao.11
    @mao.11 2 года назад

    老師,您好在19:06時我重啓服務器后顯示node:internal/modules/cjs/loader:988
    throw err;
    ^
    Error: Cannot find module 'FS'
    Require stack:
    - C:\Users\cosmi\Documents\3
    ode\server.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:985:15)
    at Function.Module._load (node:internal/modules/cjs/loader:833:27)
    at Module.require (node:internal/modules/cjs/loader:1057:19)
    at require (node:internal/modules/cjs/helpers:103:18)
    at Object. (C:\Users\cosmi\Documents\3
    ode\server.js:2:12)
    at Module._compile (node:internal/modules/cjs/loader:1155:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1209:10)
    at Module.load (node:internal/modules/cjs/loader:1033:32)
    at Function.Module._load (node:internal/modules/cjs/loader:868:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) {
    code: 'MODULE_NOT_FOUND',
    requireStack: [ 'C:\\Users\\cosmi\\Documents\\3\
    ode\\server.js' ]
    }

  • @ernpython
    @ernpython Год назад +1

    你好 視頻太棒了,我有一個問題,最後從服務器打開的網頁沒有CSS央視,怎麽辦?!

  • @rainyanlingfaith7370
    @rainyanlingfaith7370 3 года назад +2

    太棒了,很清楚,一看就懂

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад +2

      谢谢你的留言,你也很棒!加油哦!😀

  • @xinyuanliu1959
    @xinyuanliu1959 3 года назад +3

    非常有用!期待出进阶版。

  • @zoemeng6765
    @zoemeng6765 3 года назад

    文轩讲得特别好,也容易懂

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад

      谢谢你的支持哦!希望能帮你快速入门编程 :)

  • @yapmunhau4081
    @yapmunhau4081 2 года назад

    老师为什么我的一直显示Sorry, internal error

  • @wtf1138
    @wtf1138 2 года назад

    請問為什麼 我開啟網站後沒有開啟 index.html 介面
    而是下載了一個檔案 內容和 index.html 的代碼一樣

  • @chenyang5064
    @chenyang5064 2 года назад

    有一个问题请教,按照您的代码,一切正常,但我的style.css没有loading。望解答 提前感谢!(双击打开网页文件都是有css渲染的)

    • @wenxuandecode4140
      @wenxuandecode4140  2 года назад +1

      是style.css没加载成功吗?

    • @chenyang5064
      @chenyang5064 2 года назад

      @@wenxuandecode4140 是的 页面没有渲染 但是我找到文件夹 打开html文件的时候 是有渲染的

  • @cgqqqq
    @cgqqqq 2 года назад

    麻烦问一下readFile方程里面的给出path的 `./html/${filename}` 的左右两边的 ` 符号一般在js中是用来干嘛的啊,在python中没有遇到过

    • @wenxuandecode4140
      @wenxuandecode4140  2 года назад

      你好,那是template string的符号,js里string可以用single quotation, double quotation 和 back tick显示

    • @wenxuandecode4140
      @wenxuandecode4140  2 года назад

      欢迎来discord交流站互动,有问题可以直接在里面提问 😀

    • @cgqqqq
      @cgqqqq 2 года назад

      @@wenxuandecode4140 我也试了single quotation, double quotation, 但是貌似只有back tick可行...请问discord入口是什么呀,扫码好像进的是facebook group

  • @mango_78952
    @mango_78952 3 года назад +1

    非常實用 太感謝了!!

  • @ellaquinn3680
    @ellaquinn3680 3 года назад

    为什么我的request.method一次性会返回两个值?

  • @Ngkellen
    @Ngkellen 2 года назад

    想請問博主,爲什麽當我進入頁面后所有的東西都會顯示出來,例如大標題,而不是只顯示大標題,謝謝?

    • @wenxuandecode4140
      @wenxuandecode4140  2 года назад

      你好,请问还显示其他什么东西了?

    • @TheBlvision
      @TheBlvision 2 года назад +1

      我也遇到同樣問題,但解決了。
      問題可能在這裡:
      在sendResponse裡,如果讀取檔案沒有出現error時,進入else{},裡面的response.setHeader()。裡面的Content-Type 必須是 "text/html"。和出現錯誤的Content-Type "text/plain"不一樣。
      我不小心將text/html 改成 text/plain,網頁顯示就無法將html檔案視為html,而是純文字(plain)了。
      希望我的解釋能幫到你

    • @Ngkellen
      @Ngkellen 2 года назад

      @@TheBlvision 確實是這個問題,現在解決了.十分感謝

  • @エド-i5f
    @エド-i5f 3 года назад

    請問文軒老師為甚麼我的vscode經常自動幫我加上 const { request } = require("express");
    每次debug的時候都出錯,就是系統自動幫我加上這行,不知道原因是甚麼。

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад +1

      是不是安装了可以自动引入的插件?检查一下

    • @エド-i5f
      @エド-i5f 3 года назад

      @@wenxuandecode4140 感謝文軒老師回復,是裝了不少插件,我再查看看。
      感謝您

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад

      不客气,加油!

  • @guangyang8596
    @guangyang8596 3 года назад

    读取filename的时候错了 一直显示error的 sorry, internal error 是什么问题啊

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад

      去console.log(error) 看看实际错误,还有确保文件的路径正确

    • @guangyang8596
      @guangyang8596 3 года назад

      @@wenxuandecode4140 可以了 感谢

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад

      @@guangyang8596 👌 加油!

  • @xinyuanliu1959
    @xinyuanliu1959 3 года назад

    用什么浏览器呢?我用chrome, 如果输入hello.html 得到Failed to load resource: the server responded with a status of 404 (),输入about.html, 会自动下载about.html文件。求问这是为什么呢?

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад

      截图一下你的代码吧

    • @xinyuanliu1959
      @xinyuanliu1959 3 года назад

      @@wenxuandecode4140
      const http = require("http")
      const fs = require("fs")
      const sendResponse = (filename, statusCode, response) => {
      console.log(`./html/${filename}`)
      fs.readFile(`./html/${filename}`, (error, data) => {
      if (error){
      response.statusCode = 500
      response.setHeader("Content-Type", "test/plain")
      response.end("sorry, internal error")
      }else {
      response.statusCode = statusCode
      response.setHeader("Content-Type", "test/html")
      response.end()
      }
      })
      }
      const server = http.createServer((request, response) => {
      console.log(request.url, request.method)
      const method = request.method
      const url = request.url
      if (method === "GET"){
      if (url === "/"){
      sendResponse("index.html", 200, response)
      }else if (url === "/about.html") {
      sendResponse("about.html", 200, response)
      }else{
      sendResponse("404.html", 404, response)
      }
      }
      })
      const port: number = 5000
      const ip: string = "127.0.0.1"
      server.listen(port, ip, () => {

      console.log(`Server is running at ${ip}:${port}`)
      })

    • @xinyuanliu1959
      @xinyuanliu1959 3 года назад

      @@wenxuandecode4140 感觉和你的代码一模一样。是不是需要改chrome里的一些设置?

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад +1

      ​@@xinyuanliu1959 我看了一下,是这里出了问题:"test/html",正确的是"text/html"
      response.setHeader("Content-Type", "text/html")
      这是因为Chrome不能显示,也识别不了test/html类别的文件,所以会自动下载,改了就好了。
      还有就是接的要返回data数据,不然网页不会显示内容 :)

    • @xinyuanliu1959
      @xinyuanliu1959 3 года назад

      @@wenxuandecode4140 万分感谢!

  • @xiang-yue-fung
    @xiang-yue-fung 2 года назад

    我想發個問題,我今天把頁面標題(在瀏覽器標籤顯示的)設為一串中文字,卻跑出斷碼,是哪個環節的問題呢?要怎麼樣才能讓他用utf-8編碼方式顯示中文呢?

    • @wenxuandecode4140
      @wenxuandecode4140  2 года назад

      你好,可以尝试在标签里添加
      对了,有时间欢迎你去Codetisan自学平台练习,练习题会持续的更新 :)
      www.codetisan.com/zh-cn/practise

  • @Naruto-hg4um
    @Naruto-hg4um 4 года назад

    加油加油赶紧出下个视频😂

  • @ellaquinn3680
    @ellaquinn3680 3 года назад

    我的不仅返回了请求的URL,还返回了一个/favicon.ico 请问一下这是什么啊?

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад +1

      这个favicon是显示在Chrome tab上的小图标

  • @user-or3il6ez1o
    @user-or3il6ez1o 3 года назад

    为什么我写的一模一样但是浏览器还是报错?希望能够得到回复 感谢

  • @chuchenyu6239
    @chuchenyu6239 3 года назад

    老师好,bug大佬来了。请问:我只收到error、i.e.statusCode:500...我认为跟上一讲我遇到的bug有关。 我的sendResponse里的filename未被读取, ${filename} 也无法识别...就给我throw error back。求文轩大佬有空回复!

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад +1

      注意标点符号,请截图一下你的代码,然后发到自学编程社区里

  • @simchuanlow9173
    @simchuanlow9173 3 года назад

    請問一下我該怎麼實踐在15.19提到的情況呢?我想看看服務器報錯時的網頁的所有細節

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад

      你好!这个简单,console.log(error) 就可以查看error里的数据 :)

  • @aaazyma5546
    @aaazyma5546 3 года назад

    老师那个方程不用在前面写function嘛

    • @simchuanlow9173
      @simchuanlow9173 3 года назад

      老師在上個視頻有提到這是較新的定義函數的方式,是為了讓代碼整體看起來比較簡潔

  • @charlielau2363
    @charlielau2363 3 года назад

    老師 和你代碼一模一樣,但是不管什麼頁面 只要通過服務器啟動的 都是internal error,输入任何网页,不管有没有的,都是internal error,不会显示404,状态码都是200

    • @uudd1133
      @uudd1133 3 года назад +1

      你的問題應該是抓不到html文件,所以顯示internal error
      你看看你的第五行「./html/${filename}」把中間的「/html 」刪除看看

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад

      尝试将你的代码发到自学编程社区里,让我们帮你看看~~

    • @charlielau2363
      @charlielau2363 3 года назад

      @@wenxuandecode4140 问题已经结束了 是文件路径问题,重新看了一遍视频就搞定了 目前到login success 账号密码都弄完了 也可以显示页面了 非常感谢。

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад

      @@charlielau2363 那就好,继续加油哦!加入到自学编程社区了吗?有时间去看看吧~

    • @charlielau2363
      @charlielau2363 3 года назад

      @@wenxuandecode4140 好 一定去,主要现在有个实习项目要做个这样用户可以注册和登录的网站 还要po一些东西,我也没啥经验,只能youtube找资源,感觉您教的很好

  • @Legitivity
    @Legitivity 3 года назад

    老师教得好好, 签到一下, 加油加油

  • @熊正阳-y1r
    @熊正阳-y1r 3 года назад

    老师如果去了b站肯定会火

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад

      哈哈,为什么那么肯定?

    • @熊正阳-y1r
      @熊正阳-y1r 3 года назад

      @@wenxuandecode4140 我看的好几个老师都没你讲的好,不过听你的课要跟着做笔记才行

    • @熊正阳-y1r
      @熊正阳-y1r 3 года назад

      @@wenxuandecode4140 而且在油管会错失大量的内地学生,说起来我的vpn也快到期了。。。

  • @uudd1133
    @uudd1133 3 года назад

    都照著打但一直無法顯示
    最後發現“GET”三個都是大寫 乾
    希望幫到有緣人:)

  • @Ts2pc
    @Ts2pc 2 года назад

    請問Node.js 為何不用javascript function, 如#4 constant sendResponse=(){}, 為何不寫成 function sendResponse(){}?

  • @joellejoelle7377
    @joellejoelle7377 3 года назад

    全程靠抄,再刷一遍希望能有收获

  • @军-m5r
    @军-m5r 3 года назад +1

    超喜欢你的视频,可以做多点进阶版的吗?

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад

      会的,谢谢你的支持!欢迎去自学编程社区里和其他同学讨论和互动哦😀

    • @军-m5r
      @军-m5r 3 года назад

      @@wenxuandecode4140 很奇怪,我是用老师您的方法,虽然terminal出现/GET,但是页面刷不出来

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад

      @@军-m5r 要显示的页面文件路径对吗?尝试console.log() 内容

    • @军-m5r
      @军-m5r 3 года назад

      @@wenxuandecode4140 我是浏览器没有出现index页面,就是刷不出来。

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад

      @@军-m5r 先不要管能不能刷得出来的问题,先解决你后端程序出了什么问题。只有把后端问题解决了,你的页面才能正常显示。

  • @Pinkycarcar
    @Pinkycarcar 4 года назад

    来了!

  • @moshkid23y
    @moshkid23y 3 года назад

    ➜ Server node server.js
    events.js:292
    throw er; // Unhandled 'error' event
    ^
    Error: listen EADDRINUSE: address already in use 127.0.0.1:3000
    at Server.setupListenHandle [as _listen2] (net.js:1318:16)
    at listenInCluster (net.js:1366:12)
    at doListen (net.js:1503:7)
    at processTicksAndRejections (internal/process/task_queues.js:81:21)
    Emitted 'error' event on Server instance at:
    at emitErrorNT (net.js:1345:8)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
    code: 'EADDRINUSE',
    errno: -48,
    syscall: 'listen',
    address: '127.0.0.1',
    port: 3000
    }
    老師請問這是什麼意思.... 跑不出來耶,我是照著你的影片打的,後來從你的GitHub copy下來貼上也是這個問題

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад

      是不是在其他的窗口里运行着一样的程序?它投诉说端口3000已被调用

    • @moshkid23y
      @moshkid23y 3 года назад

      @@wenxuandecode4140 我解決了,就是老師您說的問題!感謝您~~~

    • @wenxuandecode4140
      @wenxuandecode4140  3 года назад

      @@moshkid23y 不客气,加油!

  • @hidaddy4509
    @hidaddy4509 4 года назад

    打卡

  • @郭力瑋-z5r
    @郭力瑋-z5r 2 года назад

    😃

    • @wenxuandecode4140
      @wenxuandecode4140  2 года назад

      不客气 😀 希望你能早日上手,对了,有时间去Codetisan自学编程平台看看吧,可能对你有帮助,免费内容我们正在持续更新中:www.codetisan.com

  • @NekoChan0122
    @NekoChan0122 4 года назад

    簽到