Imports within try blocks are hoisted incorrectly
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- javascript, nodejs, rollup
- Domaine
- build-system
Piste de recherche
Commencez par exécuter les commandes de reproduction avec microbundle v0.12.0 sur Node v12.17.0, puis inspectez dist/bug-test.js et comparez l’emplacement du require généré avec l’extrait de code source d’ esm. Déterminez si le hoisting provient de microbundle ou de Rollup ; c’est terminé lorsque require reste protégé par le bloc try et que node dist/bug-test.js se termine sans erreur.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Problem
Microbundle hoists a require() call out of a try {} block in a dependency. When that require() call throws, it is not caught by the try {} block anymore.
I'm not sure whether this is an issue with microbundle or rollup. A solution to this would be not to hoist require() calls if they are in a nested block or wrap them in a function to evaluate them lazily.
How to reproduce
Make sure you have yarn installed globally, then run following commands:
mkdir bug-test
cd bug-test
yarn add microbundle esm
echo "import 'esm'" > test.js
yarn microbundle test.js --format cjs --target node --external none
node dist/bug-test.js
Expected behaviour
Commands above should execute and exit without error code.
Actual behaviour
The node dist/bug-test.js command throws this error:
internal/modules/cjs/loader.js:969
throw err;
^
Error: Cannot find module 'internal/bootstrap/loaders'
Require stack:
- /Users/dany/code/bug-test/dist/bug-test.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:966:15)
at Function.Module._load (internal/modules/cjs/loader.js:842:27)
at Module.require (internal/modules/cjs/loader.js:1026:19)
at require (internal/modules/cjs/helpers.js:72:18)
at Object.<anonymous> (/Users/dany/code/bug-test/dist/bug-test.js:7:31)
at Module._compile (internal/modules/cjs/loader.js:1138:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [ '/Users/dany/code/bug-test/dist/bug-test.js' ]
The reason for this error is that there is this code in the esm module:
[…] function q(e){let t;try{const{internalBinding:n}=require("internal/bootstrap/loaders"),r=n("natives");x(r,e)&&(t=r[e])}catch(e){}return"string"==typeof t?t:""} […]
// Simplified:
try { require("internal/bootstrap/loaders") } catch (e) {}
which is modified to this by microbundle in dist/bug-test.js:
[…] var loaders = _interopDefault(require('internal/bootstrap/loaders')); […] function q(e){let t;try{const{internalBinding:n}=loaders,r=n("natives");x(r,e)&&(t=r[e]);}catch(e){}return "string"==typeof t?t:""} […]
// Simplified:
var loaders = require("internal/bootstrap/loaders")
try { loaders } catch (e) {}
Additional info
microbundle v0.12.0
Node v12.17.0
Mac OS 10.15.5
Related: https://github.com/nodejs/node/issues/33656
- Langage dominant
- JavaScript
- Étoiles
- 8.1k
- Forks
- 358
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de developit/microbundle
-
CSS
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
developit/microbundle#1002 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
developit/microbundle#789 · 1 commentaire ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
developit/microbundle#1100 · 4 commentaires ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
developit/microbundle#1094 · 1 commentaire ·
-
Disable minification by default Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
developit/microbundle#1093 · 3 commentaires · 1 réaction ·
Toutes les issues de developit/microbundle
Issues similaires
-
Bug
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Automattic/safe-publish#594 ·
-
内部文件键(绝对路径的 base64)泄漏到界面标签 Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
dream-num/dsh-univer-office#104 ·
-
comp/dashboard invalid P3
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
NousResearch/hermes-agent#121143 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
avniproject/avni-webapp#1811 ·
-
area/auroraboot area/webui bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100