Sentry: загрузка исходных карт из дерева папок - PullRequest
0 голосов
/ 25 марта 2020

Я работаю с приложением NextJs / ReactJs (с Typescript) и пытаюсь загрузить исходные карты в артефакты Sentry.

Сборка из этого приложения не связана в один файл , Вместо этого папка dist / output отражает структуру страниц Next Js, которая в данном случае имеет древовидную структуру, подобную этой:

.next
|__ static
   |__ buildId
      |__ app.js
      |__ _app.js.map
      |__ index.js
      |__ index.js.map
      |__ customer
         |__ [customerId]
            |__ details.js
            |__ details.js.map
            |__ sub folder 1
            |__  sub folder 2

Все файлы. js ссылаются на файл .map. Например, в /.next/static/buildId/index.js последняя строка - //# sourceMappingURL=index.js.map.

Затем я загружаю исходные карты в Sentry с помощью следующей команды:

docker exec -it wtr-admin_app_container yarn sentry-cli 
  --auth-token=${SENTRY_AUTH_TOKEN} releases
  --org=${SENTRY_ORGANIZATION}
  --project=${SENTRY_PROJECT} files ${VERSION} upload-sourcemaps "./src/.next/static/" 
  --url-prefix "~/_next/static/" 
  --no-rewrite

Проблема заключается в том, что --url-prefix, который должен быть ~/_next/static/buildId/ для /.next/static/buildId/index.js файла, но должен быть ~/_next/static/buildId/customer/[customerId]/ для /.next/static/buildId/customer/[customerId]/details.js файла.

Таким образом, загрузка всех файлов с одинаковым префиксом url не будет работать должным образом.


Есть ли способ загрузить эту древовидную структуру таким образом, чтобы файлы. js правильно ассоциировались с ее файлами .map?

Является ли RewriteFrames опцией для этого варианта использования?


1 Ответ

0 голосов
/ 27 марта 2020

Я нашел обходной путь, который позволил мне решить эту проблему и иметь возможность загружать в Sentry все дерево моих уменьшенных файлов. js вместе со связанными файлами исходных карт.

Решение:

Я решил перебрать все файлы, которые я хотел выгрузить, и один за другим загрузить их (. js и .map файл) и установить их индивидуальное значение "- url-prefix ".

Итак, для каждой пары файлов. js и .map я сделал что-то похожее с этим:

sentry-cli --auth-token=${SENTRY_AUTH_TOKEN} releases --org=${SENTRY_ORGANIZATION} --project=${SENTRY_PROJECT} files ${RELEASE_ID} upload-sourcemaps /folder_1/folder_2/file.min.js /folder_1/folder_2/file.min.js.map --url-prefix '~/folder_1/folder_2'

Результат:

После загрузки я сгенерировал ошибку в своем приложении и проверил детали этой проблемы в Sentry. Затем я смог увидеть весь след стека ошибки и увидеть исходный / незавершенный код.

Примечание:

Я сделал это (перебирать файлы и загрузить их) в файл сценария оболочки.

...