解析触发器时出错:找不到模块“csv-parse/sync”

Sun*_*kas 18 node.js typescript google-cloud-functions firebase-cli

我正在使用 Firebase 函数构建一个解析 CSV 文件的 API。

当我尝试使用 csv-parse/sync 而不是 csv-parse 时,部署到 Firebase Functions 失败并出现以下错误:

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.
Run Code Online (Sandbox Code Playgroud)

我已经使用以下方式导入:

import { parse } from 'csv-parse/sync';

然后在这样的代码中使用:

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})
}...
Run Code Online (Sandbox Code Playgroud)

我已经通过转到 /functions-folder 并运行来安装

npm install --save csv-parse

在根文件夹中部署

firebase deploy

这是框架、firebase 的问题还是我做错了什么?正常使用没有同步的“csv-parse”就可以了。在这两种情况下,它似乎在 Visual Studio Code 中导入得很好,但在使用“sync”部署时则不然。我尝试清理node_modules文件夹,重建package-lock.json文件,升级到最新版本的firebase工具,但都没有成功。

我在框架项目问题页面上添加了类似的问题:https://github.com/adaltas/node-csv/issues/323

小智 11

如果你使用 Typescript 你可以这样做

import  parse  from 'csv-parse/sync';
Run Code Online (Sandbox Code Playgroud)

或者

import  {parse}  from 'csv-parse/lib/sync';
Run Code Online (Sandbox Code Playgroud)

  • 在 JS 中本地导入“csv-parse/sync”时遇到类似的问题,第二个选项对我有用。 (6认同)