Набор данных по умолчанию не найден, если установлен APIFY_DEFAULT_DATASET_ID - PullRequest
0 голосов
/ 20 октября 2019

Подтвердить документацию введите здесь описание ссылки объясняет, что набор данных по умолчанию можно назвать, установив переменную окружения APIFY_DEFAULT_DATASET_ID. Если я это сделаю, с примером кода 1 (см. Ниже) перед созданием кукловода-сканера и если я сканирую страницу и сохраню результат с примером кода 2, я получу Dataset-not-found-exception .

Что не так с моим кодом? Cheers Wulfgäääng

// Пример кода 1: установка идентификатора набора данных по умолчанию

process.env.APIFY_DEFAULT_DATASET_ID = datasetName;

const crawler = new Apify.PuppeteerCrawler ({...

// Пример кода 2: Сохранение результата

log.info(`APIFY_DEFAULT_DATASET_ID: ${process.env.APIFY_DEFAULT_DATASET_ID}`);
const _env = Apify.getEnv();
log.info(`Apify.getEnv().defaultDatasetId:  ${_env.defaultDatasetId}`);
try{
    await Apify.pushData(_result);
} catch(err){
    console.log(`Error pushData: ${err.message}`);
}

1 Ответ

0 голосов
/ 21 октября 2019

Вы правы, код будет работать в вашей локальной среде, но не на платформе Apify.

Вам необходимо установить идентификатор / имя существующего набора данных на платформе Apify в APIFY_DEFAULT_DATASET_ID. Если вы хотите создать или использовать именованный набор данных в коде актера, я рекомендую использовать функцию Apify.openDataset () . Он будет использовать или создать набор данных для вашего актера. Вот пример:

const Apify = require('apify');

Apify.main(async () => {
    const namedDataset = await Apify.openDataset('my-dataset-name');
    console.dir(namedDataset);
    await namedDataset.pushData({test:"foo bar"});
});

Он будет работать локально так же, как и на платформе.

...