'Error parsing triggers: Cannot find module 'csv-parse/sync'
I am using Firebase functions to build an API that parses CSV files.
When I try to use csv-parse/sync instead of csv-parse, my deploy to Firebase Functions fail with the following error:
Error: Error parsing triggers: Cannot find module 'csv-parse/sync''
Require stack:
- /Users/xxx/Programming/xxx/Firebase Functions/xxx/functions/lib/index.js
- /usr/local/lib/node_modules/firebase-tools/lib/deploy/functions/runtimes/node/triggerParser.js
Try running "npm install" in your functions directory before deploying.
I have imported using:
import { parse } from 'csv-parse/sync';
Then use in code like this:
interface EventData {
update: string;
id: string;
title: string;
description: string;
category: string;
ages: string;
place: string;
placeCoordinate: string;
startDate: string;
startTime: string;
length: string;
url: string;
arrName: string;
}
let events: Array<EventData> = []
const headers = ["update", "id", "title", "description", "ages", "place", "placeCoordinate", "startDate", "startTime", "length", "url", "arrEpost", "arrName", "validated", "skugg"]
try {
events = parse(text, {columns: headers, from: 6, quote: "\"", delimiter: ";", ltrim: true, rtrim: true})
}...
I have installed by going to /functions-folder and running
npm install --save csv-parse
Deploying in root folder with
firebase deploy
Is this an issue with the framework, with firebase or am I doing something wrong? Normal use of "csv-parse" without sync works just fine. In both cases it seems to import just fine in Visual Studio Code, but not when deploying with "sync". I have tried to clean the node_modules folder, rebuild the package-lock.json-file, upgraded to the latest version of firebase tools, all without success.
I have added a similar question on the framework project issues page: https://github.com/adaltas/node-csv/issues/323
Solution 1:[1]
If you are using Typescript you can do
import parse from 'csv-parse/sync';
or
import {parse} from 'csv-parse/lib/sync';
Solution 2:[2]
For me either of the two worked in node.js (based on Jeff Paredes answer):
import parse from 'csv-parse/lib/sync';
const parse = require('csv-parse/lib/sync');
It seems like the folder structure within the node modules folder was changed. So instead of sync.js
being located in csv-parse
it is now in csv-parse/lib
.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Jeff Paredes |
Solution 2 | Tobi Obeck |