Express Node.js中app.get失效,router.get报‘unresolved function or method get()’错误
解决Express路由中
get()未解析及app.get无法工作的问题 我之前在开发Express项目时也碰到过类似的问题,结合你的代码和描述,咱们一步步排查解决:
1. 核心问题:路由未正确挂载到Express实例
你的代码里只创建了router对象,但缺少Express应用实例的初始化,也没把路由挂载到应用上——这会导致所有路由规则都无法被系统识别,不管是router.get还是app.get都没法正常工作。
修正后的完整代码参考:
const express = require('express'); const bodyParser = require('body-parser'); // 关键:创建Express应用实例(这一步你漏掉了) const app = express(); let router = express.Router(); // 配置body-parser,处理POST请求的表单数据(你装了但没启用) app.use(bodyParser.urlencoded({ extended: false })); // 定义你的GET路由 router.get('/add-product',(req, res, next)=>{ res.send('<form action="/try" method="POST"><input type="text" name="title"><button type="submit">Submit</button> </form>'); }); // 补充POST路由处理表单提交(否则提交后会返回404) router.post('/try', (req, res) => { console.log('提交的商品标题:', req.body.title); res.redirect('/add-product'); }); // 将路由挂载到应用实例上,让Express识别这些路由规则 app.use(router); // 启动服务器监听端口 app.listen(3000, () => { console.log('服务器运行在 http://localhost:3000'); });
2. 解决IDE的“unresolved function or method get()”提示
这个提示是IDE(比如VS Code、WebStorm)无法识别Express路由方法的类型定义导致的,不影响代码运行,但会影响开发体验。你可以安装Express的类型定义包来修复:
npm install --save-dev @types/express
安装后IDE就能正确识别get()、post()等路由方法,不会再报错。
3. 额外优化建议
- 你的
package.json里有个funding依赖,这是一个用于开源项目资金支持的工具,和当前Express开发无关,可以用npm uninstall funding移除它,避免不必要的依赖冗余。 - 如果之前依赖安装有异常,可以删除
node_modules文件夹和package-lock.json文件,然后重新运行npm install,确保所有依赖都正确安装。
内容的提问来源于stack exchange,提问作者usman imtiaz
相关产品推荐
相关产品推荐

