Node.js服务器重启后仍不显示文件更改问题求助
排查树莓派Node.js服务器代码不更新的问题
核对代码路径与服务指向
确认你复制新代码的目录,和开机自启服务实际运行的目录是否一致。用ls -l /path/to/your/code查看文件修改时间,对比PC端的修改记录,验证代码是否真的复制到位。如果是systemd托管的服务,打开服务配置文件(比如/etc/systemd/system/your-server.service),检查WorkingDirectory和ExecStart字段是否指向新代码目录。重新同步依赖
树莓派的依赖环境可能和PC端存在差异,进入代码目录执行:yarn install --production # 生产环境推荐用这个,减少冗余依赖 # 若用npm则执行: npm install --production确保新代码新增的依赖被正确安装。
重新编译项目(若有编译流程)
如果你的项目需要预编译(比如TypeScript转译、前端框架打包),PC端的yarn start可能包含编译步骤,但树莓派上直接复制源码可能没执行编译。进入代码目录运行编译命令:yarn build # 或对应项目的编译命令,比如tsc确认服务器启动的是编译后的最新产物。
刷新自启服务配置
即使重启树莓派,systemd服务可能未加载新配置。执行以下命令:sudo systemctl daemon-reload sudo systemctl restart your-server.service sudo systemctl status your-server.service查看服务状态输出,确认无报错,服务已加载新代码启动。
修复文件权限
复制到树莓派的文件可能权限不足,导致服务器进程无法读取。修改代码目录权限:sudo chown -R pi:pi /path/to/your/code sudo chmod -R 755 /path/to/your/code替换
pi:pi为运行服务器的用户和组。检查服务器端缓存配置
如果代码中用了静态文件缓存(比如express的express-static),检查是否设置了过长的缓存时间。例如:app.use(express.static('public', { maxAge: '1d' })) // 该配置会缓存文件1天临时注释
maxAge配置,重启服务器测试是否生效。
内容的提问来源于stack exchange,提问作者j0llyw0lly
相关产品推荐
相关产品推荐

