{"id":48616,"library":"multer-minio-storage","title":"multer-minio-storage","description":"A Multer storage engine for uploading files directly to MinIO object storage. Current stable version 1.0.0 targets Node >=10 and requires MinIO JavaScript client ^7.0.16. It provides a simple, configurable file filter and custom metadata support, integrating Multer's middleware pattern with MinIO's S3-compatible API. Key differentiator: minimal configuration compared to using multer-s3 for non-AWS S3-compatible services.","status":"active","version":"1.0.0","language":"javascript","source_language":"en","source_url":"https://github.com/hoangnguyen1247/multer-minio-storage","tags":["javascript","multer","minio","storage","typescript"],"install":[{"cmd":"npm install multer-minio-storage","lang":"bash","label":"npm"},{"cmd":"yarn add multer-minio-storage","lang":"bash","label":"yarn"},{"cmd":"pnpm add multer-minio-storage","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required peer dependency for interacting with MinIO server","package":"minio","optional":false}],"imports":[{"note":"ESM-first with TypeScript types; CommonJS require is not supported because package uses ES modules.","wrong":"const createMinioStorage = require('multer-minio-storage');","symbol":"createMinioStorage","correct":"import { createMinioStorage } from 'multer-minio-storage';"},{"note":"Use type import for TypeScript to avoid runtime errors; the interface is only a type.","wrong":"import { MinioStorageOptions } from 'multer-minio-storage';","symbol":"MinioStorageOptions","correct":"import type { MinioStorageOptions } from 'multer-minio-storage';"},{"note":"The package has a default export that directly provides the multer storage engine factory. Named import of 'default' is invalid.","wrong":"import { default } from 'multer-minio-storage';","symbol":"default (the storage engine factory)","correct":"import multerMinio from 'multer-minio-storage';"}],"quickstart":{"code":"import multer from 'multer';\nimport { createMinioStorage } from 'multer-minio-storage';\nimport * as Minio from 'minio';\n\nconst minioClient = new Minio.Client({\n  endPoint: 'play.min.io',\n  port: 9000,\n  useSSL: true,\n  accessKey: process.env.MINIO_ACCESS_KEY || '',\n  secretKey: process.env.MINIO_SECRET_KEY || '',\n});\n\nconst storage = createMinioStorage({\n  minioClient,\n  bucket: 'uploads',\n  metadata: (req, file, cb) => {\n    cb(null, { fieldName: file.fieldname });\n  },\n  filename: (req, file, cb) => {\n    cb(null, `${Date.now()}-${file.originalname}`);\n  },\n});\n\nconst upload = multer({ storage });\n\nexport default upload;","lang":"typescript","description":"Configures multer to store uploaded files on MinIO using multer-minio-storage with custom metadata and filename functions."},"warnings":[{"fix":"Use import syntax or set project to ES modules. If you must use CommonJS, use dynamic import() with .default.","message":"Package uses ES modules (type: 'module' in package.json). CommonJS require() will throw.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Always verify minioClient is correctly initialized with endPoint, accessKey, secretKey, and optionally port and useSSL.","message":"minioClient must be a pre-configured Minio.Client instance. Passing a client without required connection parameters will cause silent failures or timeouts.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Pin minio to ^7.0.16 in package.json to avoid unexpected updates.","message":"No known deprecation warnings yet for version 1.0.0. However, the dependency minio ^7.0.16 may introduce breaking changes in future minio versions.","severity":"deprecated","affected_versions":">=1.0.0"},{"fix":"Ensure the bucket is created before uploading files, e.g., using MinIO client: minioClient.bucketExists('bucketName').then(...).","message":"Bucket must already exist in MinIO. The package does not automatically create the bucket.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'1.0.0':20 '10':23 '7.0.16':29 'api':52 'aw':66 'client':28 'compar':57 'compat':51,69 'configur':34,56 'current':17 'custom':38 'differenti':54 'direct':12 'engin':8 'file':11,35 'filter':36 'integr':41 'javascript':27,71 'key':53 'metadata':39 'middlewar':44 'minim':55 'minio':3,14,26,47,73 'multer':2,6,42,61,72 'multer-minio-storag':1 'multer-s3':60 'node':22 'non':65 'non-aw':64 'object':15 'pattern':45 'provid':31 'requir':25 's3':50,62,68 's3-compatible':49,67 'servic':70 'simpl':33 'stabl':18 'storag':4,7,16,74 'support':40 'target':21 'typescript':75 'upload':10 'use':59 'version':19","created_at":"2026-06-07T16:57:33.237180+00:00","updated_at":"2026-06-07T16:57:33.237180+00:00","problems":[{"fix":"Install minio: npm install minio@^7.0.16. Then import as: import * as Minio from 'minio';","cause":"minio package not installed or incorrectly imported. The package expects the minio peer dependency.","error":"TypeError: Cannot read properties of undefined (reading 'Client')"},{"fix":"Switch to ES module syntax: import { createMinioStorage } from 'multer-minio-storage'; or use dynamic import: const { createMinioStorage } = await import('multer-minio-storage');","cause":"Using CommonJS require() to import an ESM-only package.","error":"Error [ERR_REQUIRE_ESM]: require() of ES Module not supported"},{"fix":"Provide a bucket name in the storage options, e.g., { bucket: 'my-bucket' }.","cause":"Storage option 'bucket' is missing or undefined in the options object.","error":"Error: Bucket not found: undefined"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/hoangnguyen1247/multer-minio-storage#readme","github":"https://github.com/hoangnguyen1247/multer-minio-storage","docs":null,"changelog":null,"pypi":null,"npm":"multer-minio-storage","openapi_spec":null,"status_page":null,"smithery":null,"categories":["storage"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}