使用express進行自動化創建的時候,3000端口打不開。
腳本確定沒有問題。教程上最后一步是直接在命令行輸入:gulp 再在瀏覽器上輸入:localhost:3000就可以連接。
然而我在輸入gulp后沒有報錯,但是瀏覽器一直顯示拒絕連接。
根據網上查詢的資料,可能是沒有添加app.listen(3000)這一句。在腳本添加后仍然無法連接3000端口。
考慮到可能是服務器沒有打開。
於是在根目錄下執行:npm start
報錯:missing script: start
經過排查發現必須在包含start設置的腳本的目錄下執行才有效。例如我的start設置在package.json中,而package.json在server文件夾下,所以我應當進入server目錄后再執行npm start
啟動后
提示:Port 3000 is already in use
但是通過netstat -ano | findstr: 3000命令沒有找到占用3000端口的程序。
最后發現是腳本中設置監聽端口的語句出現了兩次:一次是app.listen(3000), 一次是server.listen(3000)
刪除app.listen(3000)這條語句后,重新執行npm start,再打開瀏覽器就可以連接3000端口了。
總結:
3000端口拒絕連接原因可能出現在兩個方面:一是服務器沒打開,二是3000端口被占用
在本次問題的解決中,打開服務器要使用npm start命令,直接gulp不管用。
3000端口被占用卻找不到占用程序是因為在腳本中設置了兩次listen語句,刪除其中一條即可。
另外npm報錯:missing script: start
如果在腳本中已設置:
"scripts": { "start": "node ./bin/www" },
那么很有可能是執行命令的目錄不對。