{"id":22658,"library":"vite-plugin-express","title":"vite-plugin-express","description":"A Vite plugin that integrates Express middleware into the Vite dev server for development mocking and API prototyping. Version 1.0.3 is the latest stable release, maintained via GitHub. It uses glob patterns to load server files automatically, supports hot reload without restarting Vite, and respects Vite's resolve aliases. Differs from alternatives like vite-plugin-mock by leveraging actual Express middleware, allowing realistic request/response handling including headers, CORS, and body parsing.","status":"active","version":"1.0.3","language":"javascript","source_language":"en","source_url":"https://github.com/zation/vite-plugin-express","tags":["javascript","vite","vite-plugin","mock","express"],"install":[{"cmd":"npm install vite-plugin-express","lang":"bash","label":"npm"},{"cmd":"yarn add vite-plugin-express","lang":"bash","label":"yarn"},{"cmd":"pnpm add vite-plugin-express","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency required (>=3.0.0) for plugin API.","package":"vite","optional":false},{"reason":"Used in user code to create middleware; not a direct dependency but assumed.","package":"express","optional":true},{"reason":"Used internally for glob matching of middleware files.","package":"globby","optional":true}],"imports":[{"note":"ESM-only; no CommonJS export.","wrong":"const express = require('vite-plugin-express')","symbol":"express","correct":"import express from 'vite-plugin-express'"},{"note":"The plugin is exported as default, not a named export.","wrong":"import { express } from 'vite-plugin-express'","symbol":"express (default import)","correct":"import express from 'vite-plugin-express'"},{"note":"Must be used in ESM config files.","wrong":"const express = require('vite-plugin-express')","symbol":"vite config usage","correct":"import express from 'vite-plugin-express'\nexport default defineConfig({ plugins: [express({...})] })"},{"note":"Server files must export middleware as default (ESM) for plugin to detect.","wrong":"module.exports = router","symbol":"Router export from server file","correct":"export default router"}],"quickstart":{"code":"// vite.config.ts\nimport { defineConfig } from 'vite';\nimport react from '@vitejs/plugin-react';\nimport express from 'vite-plugin-express';\n\nexport default defineConfig({\n  plugins: [\n    react(),\n    express({\n      middlewareFiles: './server'\n    }),\n  ],\n  resolve: {\n    alias: {\n      '@': './src',\n    },\n  },\n});\n\n// server/account.ts\nimport { Router } from 'express';\n\nconst router = Router();\n\nrouter.get('/api/account', (request, response) => {\n  response.status(200).send({ name: 'John Doe' });\n});\n\nexport default router;","lang":"typescript","description":"Basic setup: Vite config with express plugin, and a server file exporting a default middleware router."},"warnings":[{"fix":"Upgrade Vite to >=3.0.0 or use an alternative plugin.","message":"Requires Vite >=3.0.0. May not work with Vite 2.x.","severity":"breaking","affected_versions":"<3.0.0"},{"fix":"Use ESM import syntax. If using CommonJS, consider dynamic import().","message":"ESM-only: Import must use import statement, not require().","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Ensure middlewareFiles pattern matches all desired files (e.g., './server/**/*.ts').","message":"Server files are loaded via glob. Files not matching the pattern will be ignored.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"No action needed; changes apply on save.","message":"Hot reload isolates Express server; changes to server files do not restart Vite.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Provide a full array of middlewares if overriding; include cors and bodyParser.json if needed.","message":"Default middlewares include CORS and body parser. Overriding with defaultMiddlewares replaces them entirely.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Switch to ESM by using import statement or set \"type\": \"module\" in package.json.","cause":"Using CommonJS require() to import the plugin.","error":"Error: require() of ES Module not supported"},{"fix":"Use default import: import express from 'vite-plugin-express'","cause":"Using named import { express } instead of default import.","error":"TypeError: express is not a function"},{"fix":"Run npm install vite-plugin-express --save-dev and ensure import path is correct.","cause":"Plugin not installed or incorrect import path.","error":"Cannot find module 'vite-plugin-express'"},{"fix":"Use default import: import express from 'vite-plugin-express'","cause":"Using named import when plugin only exports default.","error":"The requested module 'vite-plugin-express' does not provide an export named 'express'"},{"fix":"Convert project to ESM (type: module) or use dynamic import in server files.","cause":"Server file using ESM exports but project is CommonJS.","error":"Error: Unexpected token 'export'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}