Wie verwende ich Strapis Log-in-Puppenspieler?JavaScript

Javascript-Forum
Guest
 Wie verwende ich Strapis Log-in-Puppenspieler?

Post by Guest »

Ich möchte Strapis Login-Puppenspieler verwenden.
Die Strapi-Konfiguration ist vollständig und wird im internen Code von Strapi gut verwendet.
Aber obwohl ich die Protokollfunktion an puppeteer übergeben habe, funktioniert sie nicht.

Die Ausgabe wird auf der Konsole ausgegeben, aber die Meldung in der Auswertung von puppeteer ist nicht sichtbar.
Was ist das Problem?
Die Hauptfunktionen und Strapi-Einstellungen sind unten angehängt.

Code: Select all

// puppeteer code
export const test = async (log?) => {
const cluster = getCluster();

const jobData = {
url: 'https://google.com',
};

const data = await cluster.execute(jobData,
async ({ page, data }) => {
const { url } = data;
page.setDefaultNavigationTimeout(0);
log && page.on('console', (msg) => log('[Log]:', msg.text()));
await page.goto(url, { waitUntil: 'load' });

const results = await page.evaluate(async () => {
const tic = Date.now();
try {
} catch (err) {
console.error('Detail fetch error:', err);
}

// const data = [];
// ...somethings

console.log(`Elapsed time: ${Date.now() - tic}ms`);

return data;
}); // evaluate

return results;
}); // cluster.execute
return data;
};

Code: Select all

// call puppeteer function in cron tab
await test(strapi.log.debug.bind(strapi.log));

Code: Select all

// result in console
strapi  |  debug: [Log]:
strapi  |  debug: [Log]:
strapi  |  debug: [Log]:
Einstellung

Code: Select all

// ./config/middleware.ts
export default [
{
name: 'strapi::logger',
config: {
level: 'debug',
exposeInContext: true,
requests: true,
},
},
...

Code: Select all

// ./config/logger.ts
import { winston, formats } from '@strapi/logger';
const { prettyPrint } = formats;

export default {
transports: [
new winston.transports.Console({
level: 'debug',
format: winston.format.combine(
winston.format.errors({ stack: true }),
prettyPrint({ timestamps: 'YYYY-MM-DD hh:mm:ss.SSS' })
),
}),
],
};

Code: Select all

// puppeteer cluster settings
import { Cluster } from 'puppeteer-cluster';

let cluster: Cluster | null = null;

export async function initCluster() {
if (!cluster) {
cluster = await Cluster.launch({
concurrency: Cluster.CONCURRENCY_PAGE,
maxConcurrency: 5,
puppeteerOptions: {
headless: true,
executablePath: '/usr/bin/chromium-browser',
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-dev-shm-usage',
'--disable-gpu',
],
ignoreHTTPSErrors: true,
},
timeout: 60 * 1000,
monitor: true,
});

// 에러 핸들러 등록(선택)
cluster.on('taskerror', (err, data) => {
console.error(`Error in task: ${err.message}`, data);
});
}
return cluster;
}

export function getCluster(): Cluster {
if (!cluster) {
throw new Error('Cluster is not initialized. Call initCluster() first.');
}
return cluster;
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post