jspm / generator

JSPM Import Map Generator
Apache License 2.0
166 stars 21 forks source link

Regression: Import map generation deals incorrectly with 403-s from GCS #152

Closed Foppp closed 2 years ago

Foppp commented 2 years ago

We are using Google Cloud Storage (GCS) for our packages. After we updated the @jspm/generator package to 1.0.0-beta.32 (and above) we started receiving errors of 403 on packages that in previous versions worked. We believe it is because your code looks for 404 to fallback to other options, but GCS returns a 403 when a file is not found (and we cannot configure it to return 404). Previous versions took this into account, but it seems that a change in this version removed that consideration.

Stack trace:

Generating import map for dist/importmap.js

Failed to generate import map: JspmError: Invalid status code 403 loading https://roundforest-us.storage.googleapis.com/node_modules/@roundforest/sellers-catalog-management-page/1.0.63/mod.ts. Forbidden
    at Resolver.exists (.../node_modules/@jspm/generator/dist/generator.js:1430:23)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Resolver.legacyMainResolve (file:///Users/yurachemeris/Documents/Projects/RoundForest/mono/packages/sellers/sellers-catalog-management-page-server/node_modules/@jspm/generator/dist/generator.js:1832:44)
    at async Resolver.resolveExport (file:///Users/yurachemeris/Documents/Projects/RoundForest/mono/packages/sellers/sellers-catalog-management-page-server/node_modules/@jspm/generator/dist/generator.js:1630:45)
    at async TraceMap.resolve (file:///Users/yurachemeris/Documents/Projects/RoundForest/mono/packages/sellers/sellers-catalog-management-page-server/node_modules/@jspm/generator/dist/generator.js:2067:59)
    at async TraceMap.visit (file:///Users/yurachemeris/Documents/Projects/RoundForest/mono/packages/sellers/sellers-catalog-management-page-server/node_modules/@jspm/generator/dist/generator.js:1849:26)
    at async file:///Users/yurachemeris/Documents/Projects/RoundForest/mono/packages/sellers/sellers-catalog-management-page-server/node_modules/@jspm/generator/dist/generator.js:1877:13
    at async Promise.all (index 1)
    at async TraceMap.visit (file:///Users/yurachemeris/Documents/Projects/RoundForest/mono/packages/sellers/sellers-catalog-management-page-server/node_modules/@jspm/generator/dist/generator.js:1872:9)
    at async Generator.traceInstall (file:///Users/yurachemeris/Documents/Projects/RoundForest/mono/packages/sellers/sellers-catalog-management-page-server/node_modules/@jspm/generator/dist/generator.js:2709:13)
    at async generateImportMap (file:///Users/yurachemeris/Documents/Projects/RoundForest/mono/packages/sellers/sellers-catalog-management-page-server/node_modules/@roundforest/esm-import-map-cli/src/commands/generate-import-map.js:74:5)
...
guybedford commented 2 years ago

Sure, I've added a PR in https://github.com/jspm/generator/pull/153 here.

Note that the best approach is to always ensure there is a package.json file in the package with an "exports" field to inform resolutions, as that will avoid waiting on unnecessary requests.