声明路由时出现常规 `NodeJs/express` 错误(TypeError:无法读取 pathtoRegexp 中未定义的属性‘length’)
我是
node.js
的新手,这个错误花费了我很多精力去调查,所以我分享了这个错误。
我只尝试在我的 index.js 中声明
express
和一些基本路由器:
const express = require('express');
const app = express();
app.get('/api/courses', (req, res)=>{
res.send(courses);
});
app.get('/api/courses:id', (req, res)=>{
const course = courses.find(c => c.id === parseInt(req.params.id));
if (!course) res.send('The given id was not found...');
res.send(course);
});
app.get();
错误详情:
\node_modules\path-to-regexp\index.js:63 path = ('^' + path + (strict ? '' : path[path.length - 1] === '/' ? '?' : '/?')) ^
TypeError: Cannot read property 'length' of undefined at pathtoRegexp (C:\Users...\node_modules\path-to-regexp\index.js:63:49) at new Layer (C:\Users...\node_modules\express\lib\router\layer.js:45:17) at Function.route (C:\Users...\node_modules\express\lib\router\index.js:494:15) at Function.app.(anonymous function) [as get] (C:\Users...\node_modules\express\lib\application.js:481:30) at Object. (C:...\index.js:24:5) at Module._compile (module.js:652:30) at Object.Module._extensions..js (module.js:663:10) at Module.load (module.js:565:32) at tryModuleLoad (module.js:505:12) at Function.Module._load (module.js:497:3)
该错误背后的原因是使用不带参数的
app.get()
方法,该方法需要端点 url 和回调作为参数。
app.get();
导致错误。
正如
文档
所述,
app.get(path, callback [, callback ...])
必须有一个路径参数(同时
app.get(name)
必须有一个名称参数)。
我最近也遇到了这个问题,这是因为我的项目需要 .env 文件,该文件定义了所有基本路由,但不知何故它从项目中删除了。 因此,我发现这个问题的原因是检查你的 node.js 所需的所有 config/.env 文件。