diff --git a/src/pages/FriendMoments/FriendMoments.jsx b/src/pages/FriendMoments/FriendMoments.jsx
index fdf101c..6d9def6 100644
--- a/src/pages/FriendMoments/FriendMoments.jsx
+++ b/src/pages/FriendMoments/FriendMoments.jsx
@@ -4,7 +4,7 @@
 import Header from '../../components/Header';
 import { Edit } from '@icon-park/react';
 
-const API_BASE = process.env.REACT_APP_API_BASE;
+
 const USER_ID = 456;
 
 const FriendMoments = () => {
@@ -22,7 +22,7 @@
   // 拉取好友动态列表
   const fetchFeeds = async () => {
     try {
-      const res = await axios.get(`${API_BASE}/echo/users/${USER_ID}/feeds`);
+      const res = await axios.get(`/echo/users/${USER_ID}/feeds`);
       setFeeds(res.data.feeds);
       setFilteredFeeds(res.data.feeds);
     } catch (err) {
@@ -63,7 +63,7 @@
   const uploadImageToServer = async (file) => {
     const fd = new FormData();
     fd.append('file', file);
-    const res = await axios.post(`${API_BASE}/upload`, fd, {
+    const res = await axios.post(`/upload`, fd, {
       headers: {'Content-Type':'multipart/form-data'}
     });
     return res.data.url;
@@ -77,7 +77,7 @@
     }
     try {
       await axios.post(
-        `${API_BASE}/echo/users/${USER_ID}/createFeed`,
+        `/echo/users/${USER_ID}/createFeed`,
         { title: title.trim() || undefined, friend_content: content.trim(), images }
       );
       // 重置表单
@@ -97,7 +97,7 @@
   const handleDelete = async (feedId) => {
     if (!window.confirm('确定要删除这条动态吗？')) return;
     try {
-      await axios.delete(`${API_BASE}/echo/users/me/feed/${feedId}`);
+      await axios.delete(`/echo/users/me/feed/${feedId}`);
       fetchFeeds();
     } catch (err) {
       console.error('删除失败', err);
