Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用express router对相对路径进行axios调用?_Javascript_Node.js_Express_Routes_Axios - Fatal编程技术网

Javascript 如何使用express router对相对路径进行axios调用?

Javascript 如何使用express router对相对路径进行axios调用?,javascript,node.js,express,routes,axios,Javascript,Node.js,Express,Routes,Axios,我正在学习MERN堆栈并创建典型的初学者“Todo”应用程序。当我调用axios时,例如axios.post(“http://localhost:4000/todos/add“,newTodo)它发布的很好,但是当我尝试axios.post(“/todos/add”,newTodo)”时,它没有 呼叫显然只在本地起作用-我如何解决这个问题/我做错了什么 下面是位于/routes/api文件夹中的todos.js文件: const todoRouter=require(“express”).Ro

我正在学习MERN堆栈并创建典型的初学者“Todo”应用程序。当我调用axios时,例如
axios.post(“http://localhost:4000/todos/add“,newTodo)
它发布的很好,但是当我尝试
axios.post(“/todos/add”,newTodo)”时,它没有

呼叫显然只在本地起作用-我如何解决这个问题/我做错了什么

下面是位于
/routes/api
文件夹中的
todos.js
文件:

const todoRouter=require(“express”).Router();
让Todo=require('../../models/Todo');
todoRouter.route(“/”).get(函数(req,res){
查找(函数(err,todos){
如果(错误){
console.log(错误)
}否则{
res.json(todos)
}
});
});
todoRouter.route(“/:id”).get(函数(req,res){
let id=req.params.id
Todo.findById(id,函数(err,Todo){
如果(错误){
console.log(错误)
}否则{
res.json(todo)
}
});
});
todoRouter.route(“/add”).post(功能(req,res){
让todo=新todo(请求正文)
todo.save()
.then(功能(todo){
res.status(200).json({“todo”:“todo添加成功”})
})
.catch(函数(err){
res.status(400).json(“添加新todo失败”)
})
})
todoRouter.route('/update/:id').post(函数(req,res){
Todo.findById(req.params.id,函数(err,Todo){
如果(!todo)
res.status(404).send(“未找到数据”);
其他的
todo.todo_description=req.body.todo_description;
todo.todo_responsible=req.body.todo_responsible;
todo.todo_优先级=req.body.todo_优先级;
todo.todo_completed=req.body.todo_completed;
todo.save()。然后(todo=>{
res.json('Todo updated!');
})
.catch(错误=>{
资源状态(400)。发送(“不可能更新”);
});
});
});

module.exports=todoRouter
您可以将axios的
baseUrl
设置为
http://localhost:4000
然后相对路径应该可以工作

只需在您的package.json中设置“proxy”:“”属性,您的所有/something请求将被定向到后端,而无需指定基本url

感谢您的响应。但是,考虑到部署时的
baseURL
更改,没有其他方法可以直接导航相对路径吗?您需要根据环境变量设置baseURL,这样它可以在开发和部署
axios.post(“/todos/add”,newTodo)之间变化
执行此post调用时出现的错误是什么?@Sunil
[error]加载资源失败:服务器响应状态为404(未找到)(添加,第0行)