Node.js应用中Cannot GET /错误的原因及解决咨询
解决Express应用的"Cannot GET /"错误
看起来你遇到的问题很明确:当访问localhost:9000/时,你的Express应用没有对应的路由来处理根路径的GET请求,所以返回了Cannot GET /。我们一步步来解决这个问题:
1. 理解问题根源
你的app.js里定义了多个业务路由(/Register、/Login、/addproduct、/allproduct以及挂载的/upload路由),但完全没有处理根路径/的GET请求。Express对任何匹配不到路由的请求都会返回404错误,也就是你看到的这个提示。
2. 添加根路径路由
在app.listen(9000)之前,添加一个处理根路径的GET路由即可。你可以返回一个API欢迎页,或者列出所有可用的端点,方便自己调试:
// 在app.listen(9000)代码前添加 app.get('/', (req, res) => { res.send(` <h1>API服务已启动</h1> <p>可用接口列表:</p> <ul> <li>POST /Register - 提交用户注册数据</li> <li>GET /Login - 获取所有用户信息</li> <li>POST /addproduct - 添加新产品</li> <li>GET /allproduct - 获取所有产品列表</li> <li>/upload - 文件上传相关路由(查看uploadRouter定义)</li> </ul> `); });
3. 验证其他路由是否正常
其实你已有的业务路由是可以正常访问的,比如:
- 访问
localhost:9000/Login应该能返回数据库中的用户列表(如果有数据的话) - 访问
localhost:9000/allproduct会返回所有产品的JSON数据
4. 关于启动命令的小提示
你尝试的nodemon start 9000是无效的,正确的启动方式:
- 直接用
npm start(你的package.json里已经配置了start脚本为nodemon app.js) - 或者直接运行
nodemon app.js - 由于代码里已经硬编码了
app.listen(9000),不需要额外指定端口,访问localhost:9000即可
修改完代码后,nodemon会自动重启应用,此时再访问根路径就能看到你添加的响应了。
内容的提问来源于stack exchange,提问作者Alku
相关产品推荐
相关产品推荐

