vite自动关闭端口号插件
关闭端口号插件
❓:有时候我们需要强制将我们的端口号进行固定,
💡:我们在 server 中配置如下
server: {
host: '127.0.0.1',
port: 8000,
strictPort: true,
open: true,
hmr: {
overlay: false,
},
/* 当我开启之后 我的learn-redux项目中可以请求 fals则不可以 出现cors */
cors: true,
proxy: {
'/api': {
target: 'https://127.0.0.1:8002/',
changeOrigin: true,
rewrite: path => path.replace(/^\/api/, ''),
},
},
/* 当我设置为允许我的learn-redux项目中的id+端口之后 就可以访问 不添加就出现cors */
// headers: { "Access-Control-Allow-Origin": "http://127.0.0.1:8000" },
},
有时候我们端口号被占用的情况
error when starting dev server:Error: Port 8000 is already in use at Server.onError
需要我们手动去执行一次 kill
命令,比较麻烦,我们可以使用 vite 插件去优化这个步骤,我们新建一个 vite 插件 js 文件
import { exec } from "child_process";
import os from "os";
import { createServer } from "vite";
function closePortPlugin() {
return {
name: "vite-plugin-close-port",
enforce: "pre", // 确保插件在其他插件之前执行
configureServer(server) {
server.httpServer.on("error", (e) => {
if (e.code === "EADDRINUSE") {
const port = e.port; // 获取被占用的端口号
let killCmd = "";
const a = os.platform();
if (os.platform() === "darwin") {
// mac系统
// mac下通过lsof命令找到端口的进程并kill
killCmd = `lsof -i :${port} | grep LISTEN | awk '{print $2}' | xargs kill -9`;
} else if (os.platform() === "win32") {
// windows系统
// windows下通过netstat命令找到端口的进程并taskkill
killCmd = `netstat -ano | findstr :${port} | findstr LISTENING | for /f "tokens=5" %a in ('more') do taskkill /F /PID %a`;
}
if (killCmd) {
exec(killCmd, (err) => {
if (err) {
console.error(`Failed to close port ${port}`);
} else {
console.log(
`Port ${port} has been closed, restarting server...`
);
// 关闭端口成功后重新启动服务
createServer(server.config).listen();
exec("npm run dev");
}
});
}
}
});
},
};
}
export default closePortPlugin;
在我们的vite.config.ts
文件中,我们进行插件的引入
export default defineConfig({
plugins: [closePortPlugin() as any, react()],
})
当我们执行npm run dev
的时候,第一次会报端口号被占用,并且执行这个插件,我们再去执行一遍npm run dev
即可运行我们的项目
## 希望内容对你有帮助,如果有错误请联系我 q: 1911509826,感谢支持
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理