codecov / codecov-node

Global coverage report uploader for Codecov in NodeJS
https://codecov.io
MIT License
293 stars 114 forks source link

TypeError: Cannot read property 'startsWith' of undefined #284

Open FezVrasta opened 3 years ago

FezVrasta commented 3 years ago

Hi, we run Codecov with npx codecov --token=${CODECOV_TOKEN} and starting from last week we started seeing these sporadic errors:

==> Building file structure
==> Generating gcov reports (skip via --disable=gcov)
    $ find /home/circleci/repo/frontend -type f -name '*.gcno'  -exec gcov  {} +
    Failed to run gcov command.
==> Scanning for reports
    + /home/circleci/repo/frontend/coverage/clover.xml
    + /home/circleci/repo/frontend/coverage/lcov.info
==> Uploading reports
/home/circleci/.npm/_npx/56c18755c3006eff/node_modules/teeny-request/build/src/agents.js:30
    var isHttp = uri.startsWith('http://');
                     ^

TypeError: Cannot read property 'startsWith' of undefined
    at Object.getAgent (/home/circleci/.npm/_npx/56c18755c3006eff/node_modules/teeny-request/build/src/agents.js:30:22)
    at requestToFetchOptions (/home/circleci/.npm/_npx/56c18755c3006eff/node_modules/teeny-request/build/src/index.js:86:30)
    at teenyRequest (/home/circleci/.npm/_npx/56c18755c3006eff/node_modules/teeny-request/build/src/index.js:143:14)
    at /home/circleci/.npm/_npx/56c18755c3006eff/node_modules/codecov/lib/codecov.js:213:9
    at /home/circleci/.npm/_npx/56c18755c3006eff/node_modules/teeny-request/build/src/index.js:233:13
    at processTicksAndRejections (node:internal/process/task_queues:94:5)
npm ERR! code 1
npm ERR! path /home/circleci/repo/frontend
npm ERR! command failed
npm ERR! command sh -c codecov "--token="

Running the CI build again usually fixes it, are you aware of the issue?

thomasrockhu commented 3 years ago

@FezVrasta I think we were having some issues server-side that had us not returning a proper uri. Are you still experiencing this issue?

To be clear, we should fix the uploader to be more transparent of the error as opposed to what you saw here, but I wanted to make sure you weren't blocked.

FezVrasta commented 3 years ago

I still experienced this problem yesterday. I'll keep it monitored today. Thanks!

tsuz commented 3 years ago

I'm seeing the same error with the same stack trace now... How can we workaround this?

FezVrasta commented 3 years ago

I can confirm I'm still seeing these errors.

FezVrasta commented 3 years ago

Considered Codecov doesn't seem to be interested in fixing this issue I suppose for now I'll go with npx retry-cli -n 3 -- npx codecov --token=${CODECOV_TOKEN} but we'll likely get rid of codecov all together at some point.

fishactual commented 3 years ago

I am running in to this as well. To be honest the Codecov sign up / Github connection / setup process leaves a lot to be desired.

FezVrasta commented 3 years ago

Update, we had to remove it because the retry trick didn't work

tsuz commented 3 years ago

This can be worked around by using bash version of codecov so that

codecov -f ./coverage/coverage-final.json

becomes

bash <(curl -s https://codecov.io/bash) -f ./coverage/coverage-final.json

hope this helps.

pbassut commented 3 years ago

Having the same issue. If, maybe, they're still investigating the issue, at least a workaround from codecov would be nice.

anhnguyen1618 commented 3 years ago

I had the same problem with codecov nodemodule and decided to dig deeper into the code. The problem in my case is that the token which I am using is invalid. I detected the root problem by logging the result in this code https://github.com/codecov/codecov-node/blob/master/lib/codecov.js#L215. In my case, the root error is: {'detail': ErrorDetail(string='Could not find a repository associated with upload token <MY_INVALID_TOKEN>', code='not_found')} even though the error message from codecov is misleading. Hopefully this tip helps troubleshooting your problems as well.

dmail commented 3 years ago

Also happens in the following circumstances:

Then 100% of the time I get Cannot read property 'startsWith' of undefined. I would expect a better error message like Cannot find where to update coverage, or even please give access to codecov application or use a codecov token.

remcohaszing commented 3 years ago

I’m seeing this for external GitLab merge requests (for example appsemble/appsemble!1917), but not for internal ones.

thomasrockhu commented 3 years ago

I released 3.8.3 which should help with this issue