Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace pdf-extraction package from a fork to the original one #704

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

AmirL
Copy link

@AmirL AmirL commented Oct 18, 2023

У вас почему то используется форк, вместо оригинального pdf-extraction. Видимо его не обновляют, и при импорте из pdf теперь выдает
"Deprecated API usage: PDFDocumentLoadingTask.then method, use the promise getter instead."

Переустановил используя:
https://www.npmjs.com/package/pdf-extraction

@AmirL
Copy link
Author

AmirL commented Oct 18, 2023

@skvav Добрый день,

PR решает проблему с импортом из PDF.

PS Как понять, в какой версии окажется на iPhone?

@skvav
Copy link
Collaborator

skvav commented Oct 18, 2023

@AmirL Добрый день! Да, у нас используется форкнутая версия, потому как оригинальная не работает в JS окружении в приложении. А чем мешает "Deprecated API usage"? Это вроде просто предупреждение, на работу не должно влиять. По крайней мере в https://github.com/zenmoney/ZenPlugins/tree/master/src/plugins/kaspi парсинг pdf работает.

@AmirL
Copy link
Author

AmirL commented Oct 18, 2023

Хм, ну помимо этого есть еще ошибка ниже.
[error] Unhandled promise rejection [TypeError: undefined is not an object.]
[ZP] setResult not called.
https://www.dropbox.com/scl/fi/ju2lwe0i8unx541zuda5l/IMG_C1A8E962AEF7-1.jpeg?rlkey=xin35fpy8ub3uwpacwzsvw769&dl=0

И кажется это за пределами плагина. Как я понимаю, если ошибка была бы в плагине, то должно были быть ошибки валидации какие то.

  if (!blob || !blob.length) {
    throw new TemporaryError('Выберите один или несколько файлов в формате .pdf')
  }
  for (const { size, type } of blob) {
    if (type !== 'application/pdf') {
      throw new TemporaryError('Выписка должна быть в расширении .pdf')
    } else if (size >= 1000 * 1000) {
      throw new TemporaryError('Максимальный размер файла - 1 мб')
    }
  }

Но такой ошибки нет, даже если загружаю посторонний pdf для теста.

PS Кстати, у вас в main ветке сразу же не все тесты проходят, и yarn start тоже выдает ошибку.

@skvav
Copy link
Collaborator

skvav commented Oct 19, 2023

@AmirL судя по видео, ошибка возникает где-то внутри либы для парсинга pdf. Может зависит как-то от выписки?
А на счет тестов не очень понял, что именно не проходит. И yarn start vakifbank-tr тоже у меня по крайней мере работает.

@AmirL
Copy link
Author

AmirL commented Oct 20, 2023

Хм, у вас указано Node js > 16.x. Как минимум на 18 версии не запускается, и часть тестов падает. Видимо из за версии.
Может подскажете, куда смотреть для решения бага тогда? От выписки не зависит никак, ведь с посторонним pdf, должно было выдать ошибку что нет строки vakifbank.

@skvav
Copy link
Collaborator

skvav commented Oct 20, 2023

Хм, у вас указано Node js > 16.x. Как минимум на 18 версии не запускается, и часть тестов падает. Видимо из за версии.

У меня на 18-ой версии все запускается, и без ошибок :) Можно скриншот или описание ошибки запуска, пожалуйста, чтобы ясней было.

Может подскажете, куда смотреть для решения бага тогда? От выписки не зависит никак, ведь с посторонним pdf, должно было выдать ошибку что нет строки vakifbank.

Судя по всему вылет где-то внутри либы pdfjs, при том вылет не пробрасывается в вызывающий код, и scrape функция не завершается вообще ни с ошибкой ни с успехом. А в браузере через yarn start vakifbank-tr вы тоже, получается, проверить работу не можете по причине выше?

@skvav
Copy link
Collaborator

skvav commented Oct 20, 2023

Может быть, сможет помочь автор плагина - @tihonove

@AmirL
Copy link
Author

AmirL commented Oct 20, 2023

@skvav ну не только у меня не работает. Загрузил в sandbox напрямую из репо, и так же выдает ошибку.
https://codesandbox.io/p/github/AmirL/ZenPlugins/master

[webpack-cli] TypeError: Cannot read properties of undefined (reading 'split')
    at module.exports (/Users/amir/dev/nodejs/ZenPlugins/scripts/webpack.config.js:185:35)
    at loadConfigByPath (/Users/amir/dev/nodejs/ZenPlugins/node_modules/webpack-cli/lib/webpack-cli.js:1439:37)
    at async Promise.all (index 0)
    at WebpackCLI.loadConfig (/Users/amir/dev/nodejs/ZenPlugins/node_modules/webpack-cli/lib/webpack-cli.js:1454:35)
    at WebpackCLI.createCompiler (/Users/amir/dev/nodejs/ZenPlugins/node_modules/webpack-cli/lib/webpack-cli.js:1785:22)
    at Command.<anonymous> (/Users/amir/dev/nodejs/ZenPlugins/node_modules/@webpack-cli/serve/lib/index.js:105:30)
    at async Promise.all (index 1)
    at Command.<anonymous> (/Users/amir/dev/nodejs/ZenPlugins/node_modules/webpack-cli/lib/webpack-cli.js:1372:13)
node:child_process:960
    throw err;
node:child_process:960
    throw err;
    ^

Error: Command failed: webpack serve --config ./scripts/webpack.config.js --env PLUGIN=
    at checkExecSyncError (node:child_process:885:11)
    at execSync (node:child_process:957:15)
    at Object.<anonymous> (/Users/amir/dev/nodejs/ZenPlugins/scripts/wrapper.js:5:1)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
    at Module.load (node:internal/modules/cjs/loader:1119:32)
    at Module._load (node:internal/modules/cjs/loader:960:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:23:47 {
  status: 2,
  signal: null,
  output: [ null, null, null ],
  pid: 31169,
  stdout: null,
  stderr: null
}

Тесты в sandbox почему то проходят, но на локале частично падают, видимо с TimeZone какие то проблемы у тестов.
Снимок экрана 2023-10-20 в 14 05 26

@skvav
Copy link
Collaborator

skvav commented Oct 23, 2023

@AmirL похоже не та команда используется для запуска. Надо

yarn start vakifbank-tr

а не просто, видимо, yarn start

@skvav
Copy link
Collaborator

skvav commented Oct 23, 2023

А у inecobank-am действительно были кривые тесты, поправил, спасибо

@tihonove
Copy link
Contributor

@AmirL кажется да, проблема не связана с парсингом. Я, если что, готов помочь поправить сам парсер pdf-а.
У меня парсер pdf-а работает и при отладке, и на телефоне, но у меня андроид.
Сам плагин я сделал по аналогии с kaspi, можете поискать кого-нибудь в чате из казахстана с айфоном и посправшивать есть ли (была ли) у них такая проблема.

@AmirL
Copy link
Author

AmirL commented Oct 23, 2023

@skvav спасибо, не заметил что нужно название плагина добавлять в команду. Проверил, на локале выписку принимает и работает. Видимо отлаживать нужно уже сам ZenMoney :(. (Тем более что на андроиде у Tihonove работает).

@skvav
Copy link
Collaborator

skvav commented Oct 23, 2023

@AmirL не, проблема не в приложении, а в том, что в JS код плагина в продакшене исполняется в песочнице. Эта песочница не равна JS-окружению браузера, где есть глобальный window, и прочее апи браузера, и также и не равна окружению Node.js. Часть глобальных объектов сейчас полифиллится, но что-то сильно завязанное на браузер или ноду может и вылетать при исполнении в песочнице. Потому надо дебажить и смотреть, в каком конкретно месте вылетает и отчего.

@AmirL
Copy link
Author

AmirL commented Oct 23, 2023

@skvav что то я не пойму, как дебажить, если в песочнице не вылетает? Нужно как то сначала воссоздать окружение где вылетать будет. Подскажешь как?

@AmirL
Copy link
Author

AmirL commented Oct 26, 2023

@skvav могу я как то помочь? Может быть действительно вылетает на айфонах из за deprecated использования pdf библиотеки?

@skvav skvav force-pushed the master branch 3 times, most recently from 1d85111 to 4dd46df Compare March 1, 2024 16:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants