使用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" },
那么很有可能是执行命令的目录不对。