How can you save a CSV file to a temporary folder in Firebase Cloud Function using Puppeteer without a direct download link?

Currently, I am trying to use puppeteer to download a CSV file within a Firebase cloud function. To ensure that the file is not persistent, my plan is to store it in the cloud functions tmp folder. Through some investigation, I discovered that the most efficient way to access this folder's path is by utilizing os.tmpdir().

Here is the code snippet for my current function:

const downloadPath = `${os.tmpdir()}` + '/storageFolder';
await page._client.send('Page.setDownloadBehavior', {
    behavior: 'allow',
    downloadPath: downloadPath,
});
await page.waitForTimeout(500);
await page.$eval('mybutton', (mybutton) => mybutton.click());
await page.waitForTimeout(1000);

Despite implementing this code, when I check the specified path again, there is no file present in

${os.tmpdir()}` + '/storageFolder'

Even when I attempt to do so using the following code snippet:

fs.readdirSync(downloadPath).forEach(file => {
    console.log("Filename", file);
});

No files are being printed to the console. Although there are various questions on this topic, the majority of accepted solutions involve downloading the file directly from the URL. In my situation, accessing the URL is not feasible.

Why is there no file appearing in the designated folder? What could be the potential error in my setup?

Answer №1

After some adjustments, I managed to make it work on my local machine.

I decided to modify the download path to

const downloadPath = `${os.tmpdir()}\\downloads`;

It appears that my previous approach was incorrect.

Answer №2

Have you considered saving the file in a cloud storage solution? Cloud functions are typically designed to be stateless. Additionally, it appears that timeouts are being utilized which may be leading to timing issues.

Is there an alternative approach that doesn't require the use of puppeteer? :/

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Ways to display all utilized typescript types within a project

Here is a snippet of code I'm working with in my project: describe('Feature active', () => { it('Should render a Feature', () => { const wrapper = shallow(<MyComponent prop1={1}/>); expect(wrapper.prop('p ...

Tips on sorting through an array using Angular 11 and data

I'm working on a subpage that contains a large amount of detailed data in the form of thousands of records. I want to filter this data based on the "id" from my route, which is also included in the dataset. However, I've run into some difficultie ...

Prisma Remix is throwing a TypeError: "The function (0, import_prisma.createNote) is not defined as a function."

In my project, I wrote a function using the prisma client which is being called from the notes.tsx route in remix. export async function createNote(entity: { title: string, description: string }) { const note = await prisma.note.create({ data: ...

Best practices for effectively managing interface design

My current interface looks like this: export interface Folder { name: string; id: number; date: Date; } However, in the actual scenario, the JSON response provides the date as a string type. How should I handle this data transfer between the back-en ...

Execute the CountUp function when the element becomes visible

Currently, I am implementing the following library: https://github.com/inorganik/ngx-countUp Is there a way to activate the counting animation only when the section of numbers is reached? In other words, can the count be triggered (<h1 [countUp]="345 ...

We're sorry, the request was blocked due to a missing Access-Control-Allow-Origin header

Recently, while working on a blog application with the front end in react + typescript and backend in go iris, I encountered an issue when trying to fetch blog content using a get request. The backend was running on localhost:5000 and the node at localhost ...

Using routerLink for linking to multiple components

Below is the anchor tag provided: <a class="uppercase" routerLink="settings/pressure" routerLinkActive="text-success" (click)="closeModal()" > <div class="pad-btm"> PRESSURE </div> </a> I need to include another route ...

Two tags attached to four hypertext links

Within my HTML code, I have hyperlinks present on every line. However, I am seeking to eliminate these hyperlinks specifically from "your previous balance" and "your new balance".https://i.sstatic.net/ekVGT.png In the following HTML snippet: <tr *ngFor ...

Unable to encode value that is not an enumerated type

Working with my graphQL API using typescript and type-graphql, I am attempting to perform a mutation that has an inputType with an enum value defined as shown below export enum GenderType { female = 'female', male = 'male', } regis ...

Struggling to determine data type in Typescript

My goal is to create an interface for my realm Database using TypeScript. Essentially, I have an automation bot and I want to monitor and track how users are utilizing it. To achieve this, I have designed specific schemas that will be integrated into an i ...

Using multiple flatMap responses within the map operator across various functions: a guide

I've been working on a solution to connect multiple operations within a map function that follows the flatMap operator. Here's how it currently functions: flatMap( someResponse => combineLatest([ this.locator.function(someResponse, var ...

Trouble seeing span in ion-item in Ionic 2: How can I display plain text instead?

It seems like I may be overlooking something, as I am experiencing an issue with adding a span to an Ion Item, where the span is not being rendered, nor is the div. <ion-card> <ion-card-title> </ion-card-title> <div> < ...

Identify when the Vue page changes and execute the appropriate function

Issue with Map Focus Within my application, there are two main tabs - Home and Map. The map functionality is implemented using OpenLayers. When navigating from the Home tab to the Map tab, a specific feature on the map should be focused on. However, if th ...

Error in TypeScript on SendGrid API: Invalid HttpMethod

Here is my code snippet: import sendgridClient from '@sendgrid/client' sendgridClient.setApiKey(process.env.SENDGRID_API_KEY); const sendgridRequest = { method: 'PUT', url: '/v3/marketing/contacts', bo ...

Guide on setting a default value for a variable within a Typescript class

In the process of developing a component to manage information about fields for form use, I am in need of storing different data objects in order to establish generic procedures for handling the data. export class DataField<T> { /** * Field ...

What is the best way to incorporate an Angular template to verify if a particular array includes an object with a property that matches a specific value?

I am currently working with Angular and have encountered the following scenario: <div *ngIf="myarrayContainsEating('Chocolate')">Chocolate Is Good</div> Within my component, I have defined an array as follows: myarray = [{'nam ...

How can I use Typescript to define a function that accepts a particular string as an argument and returns another specific string?

I've been working on this code snippet: const Locales = { en_gb: 'en-gb', en_us: 'en-us', } as const type ApiLocales = typeof Locales[keyof typeof Locales] type DatabaseLocales = keyof typeof Locales function databaseLanguage ...

Warning: Redundant import of RxJS detected

After upgrading from RxJS 5 to 6, I used the migration tool to update my code: rxjs-5-to-6-migrate -p tsconfig.json Upon completion, I encountered a series of messages like this: WARNING: /path/to/file.ts[3, 1]: duplicate RxJS import It seems like th ...

"Creating a visual representation of models exchanged between the client and server through Rest

Currently, I am working on a project that involves client-server communication via rest API, with Angular 2 calling restful web services as the primary method. The client side is written in Typescript, which is a subset of JavaScript. My main challenge li ...

Struggling to locate the module in React Native with TypeScript configuration

Currently, I am in the middle of transitioning our react-native project from JavaScript to TypeScript. As I attempt to import old modules, I keep encountering the following error: Cannot find module 'numeral' Oddly enough, the 'numeral&apo ...