【发布时间】:2019-05-30 05:52:09
【问题描述】:
我正在使用来自以下 URL 的传入 HTTP 请求在 Ubuntu 上工作:
http://<MY-IP>:3000/v1/projects/list
说明: 问题是我在终端中收到以下错误:
TypeError [ERR_UNESCAPED_CHARACTERS]: Request path contains unescaped characters
at new ClientRequest (_http_client.js:127:13)
at Object.request (https.js:300:10)
at Request.start (/home/dev/grem-api-dev/apiv3/node_modules/request/request.js:751:32)
at Request.end (/home/dev/grem-api-dev/apiv3/node_modules/request/request.js:1512:10)
at end (/home/dev/grem-api-dev/apiv3/node_modules/request/request.js:564:14)
at Immediate._onImmediate (/home/dev/grem-api-dev/apiv3/node_modules/request/request.js:578:7)
at processImmediate(timers.js:632:19)
在此错误节点进程从终端消失后(但仍在工作并且 API 响应已正确发送),但我看不到它是否正常工作(image attached)。因此,与节点进程交互的唯一方法是执行ps aux | grep node 或ps T 之类的操作并手动终止进程。
假设错误意味着我找到了出现错误的适当代码片段 (request.js:751:32)。这里是:
try {
self.req = self.httpModule.request(reqOptions)
} catch (err) {
self.emit('error', err)
return
}
我找到的唯一解决方案是评论 self.emit('error', err) 代码行,这显然与最佳实践相去甚远。
事实上,相同的代码可以在具有相同组件版本的其他计算机(Ubuntu、Windows)上运行,并且不会发生错误。此外,像 http://myIp:3000/v1/community/list 这样的 API 端点在所有设备上都可以正常工作。
这是我的组件版本:
-
npm — 6.5.0,
-
节点——11.4.0,
-
请求——2.88.0,
-
Ubuntu — 16.04 (Windows — 10)
如果需要一些代码片段(Express Server 创建和 ProjectsController 中的特定路由):
const app = express();
app.use('/v1/projects/', ProjectsController);
const router = express.Router();
router.post('/list', function(req,res){
//logic
});
【问题讨论】:
标签: node.js express npm ubuntu-16.04