localhost:3000拒绝连接,npm:missing script: start

使用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"
  },

那么很有可能是执行命令的目录不对。

猜你喜欢

转载自www.cnblogs.com/reiko/p/8982200.html