csv-loader
raw JSON → 3.0.5 verified Mon Apr 27 auth: no javascript maintenance
A webpack loader that imports CSV files as JSON with automatic type conversion using Papa Parse. Version 3.0.5 is current, released in 2022 with security updates for transitive dependencies. It supports TSV, DSV, and any delimited file by detecting delimiters. Compared to raw Papa Parse, it integrates seamlessly into webpack builds and provides type coercion (dynamicTyping) by default. Maintenance is infrequent, but compatibility extends to webpack 4 and 5. Not recommended for large streaming files; limited to synchronous loading.
Common errors
error Module not found: Error: Cannot resolve module 'papaparse' ↓
cause Missing peer dependency in v3.
fix
Run npm install --save-dev papaparse
error TypeError: Cannot read property 'delimiter' of undefined ↓
cause Options object missing or malformed.
fix
Ensure options is an object, e.g., { loader: 'csv-loader', options: {} }
error The 'data' argument of forEach is not an array ↓
cause CSV file has only one row parsed as object.
fix
Set header: true or ensure file has multiple rows.
error Error: Cannot find module 'loader-utils' ↓
cause Missing loader-utils for webpack <5.
fix
Run npm install --save-dev loader-utils
Warnings
breaking v3.0.0 requires papaparse as a peer dependency, not bundled. ↓
fix Run npm install --save-dev papaparse
deprecated loader-utils is no longer necessary in webpack 5; functionality built-in. ↓
fix Upgrade to webpack 5 or remove manual loader-utils reference.
gotcha dynamicTyping may convert numeric strings incorrectly (e.g., zip codes). ↓
fix Set dynamicTyping: false or provide explicit schema.
breaking v2.0.0 changed to Papa Parse defaults; overrides needed for custom delimiters. ↓
fix Add options.delimiter explicitly if not comma.
deprecated The loader uses synchronous parsing; large files block the event loop. ↓
fix Use a different streaming parser for huge datasets.
Install
npm install csv-loader yarn add csv-loader pnpm add csv-loader Imports
- default export wrong
import data from 'data.csv'correctmodule.exports = { ... } - webpack rule wrong
{ test: /\.csv$/, use: 'csv-loader' }correct{ test: /\.csv$/, loader: 'csv-loader', options: { dynamicTyping: true } } - reading data wrong
const data = require('file.csv')correctimport data from 'file.csv'; // data is parsed JSON
Quickstart
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.csv$/,
loader: 'csv-loader',
options: {
dynamicTyping: true,
header: true,
skipEmptyLines: true
}
}
]
}
};
// app.js
import employees from './employees.csv';
console.log(employees); // Array of objects with typed values