SauceLLC / sauce4strava

Sauce for Strava™
MIT License
196 stars 23 forks source link

Fitness tracking graphs not being displayed #175

Closed Samze closed 11 months ago

Samze commented 11 months ago

The graphs on the fitness tracking page do not appear to load for me. I see the following error in my console logs

VM847:1307 Sauce Error: TypeError: element.getSegments is not a function or its return value is not iterable

See attached screenshot and the full chrome console output below.

image
GET https://www.strava.com/sauce/performance/fitness/17457796/12/weeks 404 (Not Found)
boot.js:353 Sauce loading: Sauce Libs
boot.js:353 Sauce loading: Sauce Performance - Common
boot.js:353 Sauce loading: Sauce Performance - Fitness
weeks:969 Access to font at 'https://d3nn82uaxijpm6.cloudfront.net/assets/maison-neue-v2/MaisonNeueWEB-Book-745011ce3952aaa2bc4d1714ec74b9b2e996cce5c280c226a65849474593f53e.woff2' from origin 'https://www.strava.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
strava-app-icons-8b64eb80dc7904afcdcd12717bcf3d48e888417b6aee7c1a79803215f945608a.css:1 

       GET https://d3nn82uaxijpm6.cloudfront.net/assets/maison-neue-v2/MaisonNeueWEB-Book-745011ce3952aaa2bc4d1714ec74b9b2e996cce5c280c226a65849474593f53e.woff2 net::ERR_FAILED 200 (OK)
weeks:969 Access to font at 'https://d3nn82uaxijpm6.cloudfront.net/assets/maison-neue-v2/MaisonNeue-Demi-cc7b8b89b18425701153d0013c5b97bbf68cb262d5851539112261711be3e9de.woff2' from origin 'https://www.strava.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
strava-app-icons-8b64eb80dc7904afcdcd12717bcf3d48e888417b6aee7c1a79803215f945608a.css:1 

       GET https://d3nn82uaxijpm6.cloudfront.net/assets/maison-neue-v2/MaisonNeue-Demi-cc7b8b89b18425701153d0013c5b97bbf68cb262d5851539112261711be3e9de.woff2 net::ERR_FAILED 200 (OK)
weeks:196 

       GET https://www.googletagmanager.com/gtm.js?id=GTM-TP845S&l=googleTagManagerDataLayer net::ERR_BLOCKED_BY_CLIENT
(anonymous) @ weeks:196
loadGTM @ weeks:197
(anonymous) @ weeks:201
weeks:500 

       GET https://cdn.branch.io/branch-latest.min.js net::ERR_BLOCKED_BY_CLIENT
(anonymous) @ weeks:500
loadBranch @ weeks:500
(anonymous) @ weeks:509
8f96b1247cf4359f8fec.js:39 

       POST https://c.strava.com/com.snowplowanalytics.snowplow/tp2 net::ERR_BLOCKED_BY_CLIENT
F @ 8f96b1247cf4359f8fec.js:39
enqueueRequest @ 8f96b1247cf4359f8fec.js:41
(anonymous) @ 8f96b1247cf4359f8fec.js:89
f @ 8f96b1247cf4359f8fec.js:56
trackPageView @ 8f96b1247cf4359f8fec.js:58
Ia @ 8f96b1247cf4359f8fec.js:82
(anonymous) @ 8f96b1247cf4359f8fec.js:103
K @ 8f96b1247cf4359f8fec.js:87
l.trackPageView @ 8f96b1247cf4359f8fec.js:103
(anonymous) @ 8f96b1247cf4359f8fec.js:156
h @ 8f96b1247cf4359f8fec.js:25
td @ 8f96b1247cf4359f8fec.js:26
Ic @ 8f96b1247cf4359f8fec.js:114
(anonymous) @ 8f96b1247cf4359f8fec.js:162
(anonymous) @ 8f96b1247cf4359f8fec.js:162
remoteEntry.js?t=2023-11-07T16:26:32+00:00:1 Unsatisfied version 15.8.1 from strava_find_and_invite_friends of shared singleton module prop-types (required =15.7.2)
l @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
(anonymous) @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
(anonymous) @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
398 @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
(anonymous) @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
_.f.consumes @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
(anonymous) @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
_.e @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
./CPRAComplianceCTAWrapper @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
u @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
(anonymous) @ Microfrontend.js:188
Promise.then (async)
(anonymous) @ Microfrontend.js:187
(anonymous) @ react-dom.production.min.js:30
xo @ react-dom.production.min.js:263
gu @ react-dom.production.min.js:246
mu @ react-dom.production.min.js:246
ou @ react-dom.production.min.js:239
nu @ react-dom.production.min.js:230
Qu @ react-dom.production.min.js:281
(anonymous) @ react-dom.production.min.js:284
cu @ react-dom.production.min.js:240
Xu @ react-dom.production.min.js:284
t.render @ react-dom.production.min.js:290
f @ react-component-mounter.js:102
(anonymous) @ react-component-mounter.js:121
remoteEntry.js?t=2023-11-07T16:26:32+00:00:1 Unsatisfied version 1.2.6 from webpack4 of shared singleton module @strava/container-context (required ^workspace:*)
l @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
(anonymous) @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
(anonymous) @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
4323 @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
(anonymous) @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
_.f.consumes @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
(anonymous) @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
_.e @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
(anonymous) @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
s @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
(anonymous) @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
(anonymous) @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
1949 @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
(anonymous) @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
_.f.consumes @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
(anonymous) @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
_.e @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
./CPRAComplianceCTAWrapper @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
u @ remoteEntry.js?t=2023-11-07T16:26:32+00:00:1
(anonymous) @ Microfrontend.js:188
Promise.then (async)
(anonymous) @ Microfrontend.js:187
(anonymous) @ react-dom.production.min.js:30
xo @ react-dom.production.min.js:263
gu @ react-dom.production.min.js:246
mu @ react-dom.production.min.js:246
ou @ react-dom.production.min.js:239
nu @ react-dom.production.min.js:230
Qu @ react-dom.production.min.js:281
(anonymous) @ react-dom.production.min.js:284
cu @ react-dom.production.min.js:240
Xu @ react-dom.production.min.js:284
t.render @ react-dom.production.min.js:290
f @ react-component-mounter.js:102
(anonymous) @ react-component-mounter.js:121
boot.bundle.js:350 

       GET https://www.google-analytics.com/analytics.js net::ERR_BLOCKED_BY_CLIENT
(anonymous) @ boot.bundle.js:350
n @ boot.bundle.js:1
(anonymous) @ boot.bundle.js:1
(anonymous) @ boot.bundle.js:1
weeks:1 Access to XMLHttpRequest at 'https://elevate-prod-02.herokuapp.com/api/athlete/update' from origin 'https://www.strava.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
boot.bundle.js:350 Endpoint <https://elevate-prod-02.herokuapp.com/api/athlete/update> not reachable {readyState: 0, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}
error @ boot.bundle.js:350
i @ VM885:2
fireWith @ VM885:2
z @ VM885:4
eval @ VM885:4
error (async)
send @ VM885:4
ajax @ VM885:4
i.post @ application-6db870d3d6cab736a9dd7b0a99b44d3945e2a1d3ac674233cf5066c32357c449.js:15
commit @ boot.bundle.js:350
commitAthleteUpdate @ boot.bundle.js:350
handleAthleteUpdate @ boot.bundle.js:350
(anonymous) @ boot.bundle.js:350
Promise.then (async)
run @ boot.bundle.js:350
(anonymous) @ boot.bundle.js:350
emitStartCoreEvent @ content.bundle.js:1
(anonymous) @ content.bundle.js:1
loaded @ content.bundle.js:1
(anonymous) @ content.bundle.js:1
load (async)
writeScript @ content.bundle.js:1
require @ content.bundle.js:1
(anonymous) @ content.bundle.js:1
Promise.then (async)
start @ content.bundle.js:1
277 @ content.bundle.js:1
r @ content.bundle.js:1
(anonymous) @ content.bundle.js:1
(anonymous) @ content.bundle.js:1
Show 12 more frames
Show less
VM885:4 

       POST https://elevate-prod-02.herokuapp.com/api/athlete/update net::ERR_FAILED
send @ VM885:4
ajax @ VM885:4
i.post @ application-6db870d3d6cab736a9dd7b0a99b44d3945e2a1d3ac674233cf5066c32357c449.js:15
commit @ boot.bundle.js:350
commitAthleteUpdate @ boot.bundle.js:350
handleAthleteUpdate @ boot.bundle.js:350
(anonymous) @ boot.bundle.js:350
Promise.then (async)
run @ boot.bundle.js:350
(anonymous) @ boot.bundle.js:350
emitStartCoreEvent @ content.bundle.js:1
(anonymous) @ content.bundle.js:1
loaded @ content.bundle.js:1
(anonymous) @ content.bundle.js:1
load (async)
writeScript @ content.bundle.js:1
require @ content.bundle.js:1
(anonymous) @ content.bundle.js:1
Promise.then (async)
start @ content.bundle.js:1
277 @ content.bundle.js:1
r @ content.bundle.js:1
(anonymous) @ content.bundle.js:1
(anonymous) @ content.bundle.js:1
Show 12 more frames
Show less
boot.bundle.js:350 {textStatus: 'error', errorThrown: ''}
(anonymous) @ boot.bundle.js:350
(anonymous) @ boot.bundle.js:54
(anonymous) @ boot.bundle.js:54
when @ boot.bundle.js:54
T.r.promiseDispatch @ boot.bundle.js:54
(anonymous) @ boot.bundle.js:54
d @ boot.bundle.js:54
l @ boot.bundle.js:54
(anonymous) @ boot.bundle.js:350
p @ boot.bundle.js:350
o @ boot.bundle.js:350
postMessage (async)
r @ boot.bundle.js:350
h.setImmediate @ boot.bundle.js:350
s.runAfter @ boot.bundle.js:54
(anonymous) @ boot.bundle.js:54
B @ boot.bundle.js:54
A.i.reject @ boot.bundle.js:54
error @ boot.bundle.js:350
i @ VM885:2
fireWith @ VM885:2
z @ VM885:4
eval @ VM885:4
error (async)
send @ VM885:4
ajax @ VM885:4
i.post @ application-6db870d3d6cab736a9dd7b0a99b44d3945e2a1d3ac674233cf5066c32357c449.js:15
commit @ boot.bundle.js:350
commitAthleteUpdate @ boot.bundle.js:350
handleAthleteUpdate @ boot.bundle.js:350
(anonymous) @ boot.bundle.js:350
Promise.then (async)
run @ boot.bundle.js:350
(anonymous) @ boot.bundle.js:350
emitStartCoreEvent @ content.bundle.js:1
(anonymous) @ content.bundle.js:1
loaded @ content.bundle.js:1
(anonymous) @ content.bundle.js:1
load (async)
writeScript @ content.bundle.js:1
require @ content.bundle.js:1
(anonymous) @ content.bundle.js:1
Promise.then (async)
start @ content.bundle.js:1
277 @ content.bundle.js:1
r @ content.bundle.js:1
(anonymous) @ content.bundle.js:1
(anonymous) @ content.bundle.js:1
Show 12 more frames
Show less
VM847:1307 Sauce Error: TypeError: element.getSegments is not a function or its return value is not iterable
    at Object.afterDatasetsUpdate (charts.mjs:197:43)
    at Object.notify (boot.bundle.js:68:88451)
    at ActivityTimeRangeChart.updateDatasets (boot.bundle.js:68:106928)
    at ActivityTimeRangeChart.update (boot.bundle.js:68:106232)
    at ActivityTimeRangeChart.update (charts.mjs:365:15)
    at TrainingChartView.updateChart (fitness.mjs:256:20)
    at TrainingChartView.onUpdateActivities (charts.mjs:600:14)
    at a (application-6db870d3d6cab736a9dd7b0a99b44d3945e2a1d3ac674233cf5066c32357c449.js:6:10520)
    at PageView.trigger (application-6db870d3d6cab736a9dd7b0a99b44d3945e2a1d3ac674233cf5066c32357c449.js:6:9838)
    at PageView._updateActivities (views.mjs:1558:14)
reportError @ VM847:1307
Promise.catch (async)
init @ loader.mjs?module=fitness:53
await in init (async)
(anonymous) @ loader.mjs?module=fitness:76
charts.mjs:197 Uncaught TypeError: element.getSegments is not a function or its return value is not iterable
    at Object.afterDatasetsUpdate (charts.mjs:197:43)
    at Object.notify (boot.bundle.js:68:88451)
    at ActivityTimeRangeChart.updateDatasets (boot.bundle.js:68:106928)
    at ActivityTimeRangeChart.update (boot.bundle.js:68:106232)
    at ActivityTimeRangeChart.update (charts.mjs:365:15)
    at ActivityTimeRangeChart.resize (boot.bundle.js:68:103976)
    at n (boot.bundle.js:68:110867)
    at r (boot.bundle.js:68:84860)
    at boot.bundle.js:68:85058
afterDatasetsUpdate @ charts.mjs:197
notify @ boot.bundle.js:68
updateDatasets @ boot.bundle.js:68
update @ boot.bundle.js:68
update @ charts.mjs:365
resize @ boot.bundle.js:68
n @ boot.bundle.js:68
r @ boot.bundle.js:68
(anonymous) @ boot.bundle.js:68
requestAnimationFrame (async)
(anonymous) @ boot.bundle.js:68
i @ boot.bundle.js:68
scroll (async)
e._reset @ boot.bundle.js:68
(anonymous) @ boot.bundle.js:68
Se.n.renderProxy @ boot.bundle.js:68
boot.bundle.js:350 A previous sync exists on Tue Nov 07 2023 09:23:53 GMT-0700 (Mountain Standard Time)
boot.bundle.js:350 Fast sync mode enabled
boot.bundle.js:350 undefined
weeks:1 Unchecked runtime.lastError: The message port closed before a response was received.
boot.bundle.js:350 Local and remote activities count matches.
boot.bundle.js:350 Last sync date time saved:  Tue Nov 07 2023 09:26:44 GMT-0700 (Mountain Standard Time)
boot.bundle.js:350 Fast sync finished {activitiesChangesModel: {…}, activities: Array(3170), syncDateTime: 1699374404755}
boot.bundle.js:350 undefined
weeks:1 Unchecked runtime.lastError: The message port closed before a response was received.
mayfield commented 11 months ago

Hi @Samze,

Looks like you have the Elevate ext enabled and the error is coming from a global dependency not working as expected (Chart.js). Can you try disabling Elevate and see if this restores functionality? I'm guessing they are bringing their own global.Chart object to the table and it's causing compat issues.

Samze commented 11 months ago

Thanks @mayfield for the quick response, yeah that seems to be the issue! Will run the extensions in different chrome profiles. Cheers