{"id":18350,"library":"express-processimage","title":"express-processimage","description":"Express middleware for on-the-fly image processing based on query string parameters. Version 11.2.0. Intended for development use, not production. Supports multiple image formats (PNG, JPG, GIF, SVG) and operations (resize, pngcrush, optipng, jpegtran, svgfilter, etc.). Uses impro module to switch between backends (GraphicsMagick, ImageMagick, command-line tools). Alternative to separate build tools. Note: due to shelling out to external binaries, it presents security concerns; validate inputs and limit image sizes in production.","status":"active","version":"11.2.0","language":"javascript","source_language":"en","source_url":"git://github.com/papandreou/express-processimage","tags":["javascript","express","middleware","image","images","png","jpg","jpeg","resize"],"install":[{"cmd":"npm install express-processimage","lang":"bash","label":"npm"},{"cmd":"yarn add express-processimage","lang":"bash","label":"yarn"},{"cmd":"pnpm add express-processimage","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core image processing engine","package":"impro","optional":false},{"reason":"Interceptors response to modify image","package":"hijackresponse","optional":false},{"reason":"HTTP framework","package":"express","optional":false}],"imports":[{"note":"CommonJS require works as default export","wrong":"const processImage = require('express-processimage')","symbol":"default","correct":"import processImage from 'express-processimage'"},{"note":"No named export; default export only","wrong":"const { processImage } = require('express-processimage')","symbol":"processImage","correct":"const processImage = require('express-processimage')"},{"note":"Must use default import","wrong":"import { processImage } from 'express-processimage'","symbol":"default","correct":"const processImage = require('express-processimage')"}],"quickstart":{"code":"import express from 'express';\nimport processImage from 'express-processimage';\nconst app = express();\nconst root = '/path/to/images';\napp.use(processImage({ root }));\napp.use(express.static(root));\napp.listen(3000);","lang":"javascript","description":"Set up Express server with express-processimage middleware to serve processed images via query parameters."},"warnings":[{"fix":"Use const app = express(); app.use(processImage({root})); app.listen(1337);","message":"Express 4.x requires app.use, not express().use()","severity":"breaking","affected_versions":">=4.0.0"},{"fix":"Always pass { root: '/path' } object.","message":"Option 'root' has been required since v5.0.0","severity":"deprecated","affected_versions":">=5.0.0"},{"fix":"Order: app.use(processImage({root})), then app.use(express.static(root)).","message":"Middleware must be placed before express.static to intercept images","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Use 'pngcrush' instead of 'optipng'.","message":"Query string tool names changed: 'optipng' deprecated in favor of 'pngcrush'","severity":"deprecated","affected_versions":">=10.0.0"},{"fix":"Upgrade Node.js to v10 or higher.","message":"Support for Node.js <10 removed in v8.0.0","severity":"breaking","affected_versions":">=8.0.0"},{"fix":"Set cache-control headers explicitly.","message":"ETag modification can cause caching issues with CDN","severity":"gotcha","affected_versions":">=0.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Install optipng via package manager (e.g., apt-get install optipng).","cause":"optipng binary not installed","error":"Error: spawn optipng ENOENT"},{"fix":"Use const processImage = require('express-processimage') or import processImage from 'express-processimage'.","cause":"Imported incorrectly (named instead of default)","error":"TypeError: processImage is not a function"},{"fix":"Run npm install express-processimage to install all dependencies.","cause":"Missing dependency","error":"Error: Cannot find module 'impro'"},{"fix":"Add { root: '/path/to/images' } to processImage options.","cause":"Root option not provided","error":"403 Forbidden: no root set"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}