Express router.get 失败,但 app.get 有效

Express router.get fails, yet app.get works

在浏览 this tutorial 时,我遇到了路由器方法不起作用的问题。使用 npm start 并访问 localhost:3000/api/puppies 会出现 404 错误。但是当我改变

var router = express.Router();
router.get('/api/puppies', db.getAllPuppies);

var app = express();
app.get('/api/puppies', db.getAllPuppies);

和 运行 以及 node index.js,数据按预期打印。我也试过放在文件的开头

app.use(express.static(__dirname + '/api/'));

但没有快乐。这与npm start有关吗?有一次我确实 copy/pasted 教程中的代码,但我仍然得到 404s。

路由器必须连接到您的 Express 应用才能成为您服务器的一部分。

app.use(yourRouter);

或者,更常见的是,使用一个路径将路由器的效果隔离到仅以特定路径开头的 URL,并且路由器自己的 URL 是相对于此路径的:

app.use('/somePath', yourRouter);

没有这个,它只是一个未连接到任何服务器的已声明和配置的路由器。

快递文件examples here.


您引用的教程似乎没有显示使用路由器的这一部分。