dbwebb-se / databas

Course repo for database course (dbw).
Other
4 stars 2 forks source link

Stöd ES moduler som ett komplement till Node moduler #42

Open mosbth opened 2 years ago

mosbth commented 2 years ago

Det finns en del funderingar kring om vi kan stödja ES moduler i kursen. Dels hur vi kan göra det och dels hur det påverkar valideringen.

Vi kan troligen hitta ett sätt som fungerar i kmom02/03 men jag är lite osäker på hur det blir till kmom04 och framåt, men det är säkert lösbart med lite extra kraftinsats.

Berätta gärna hur ni gjort hittills så tar vi det därifrån.

Det är okey att jobba med ES moduler om man vill och om man även vet att det inte är grundplanen i kursen.

blajban commented 2 years ago

Själva programmet fungerar utmärkt med:

const require = createRequire(import.meta.url);
this.config = require(`../${configFile}`);
this.mysql  = require("promise-mysql");

Men dbwebb validate ignorerar helt .mjs-filer. Jag bytte namn på filerna tillfälligt till .js och validerade dem på det sättet. Ett felmeddelande:

Parsing error: unexpected token import

Tänker att det kanske kan bero på namnbytet?

mosbth commented 2 years ago

När man använder ESM moduler kan man antingen namnge dem som .mjs eller sätter man "type": "module" i sin fil package.json.

Jag har kollat lite och gjorde bla två exampelprogram, ett med node-moduler world och ett med ESM moduler world_esm. De båda katalogerna ligger i kursrepot under example/nodejs och fungerar båda två.

Det är dock lite problematiskt att få både Node-moduler och ESM-moduler att fungera med dbwebb validate tillsammans med kursrepot.

Då kursrepots alla exempelprogram är skrivna i node moduler så är det den enkla vägen genom kursen. Då fungerar alla validatorer och exempelprogram och vi minimerar trubbel.

Så, rekommendationen får bli att köra på node moduler.

Att ändra detta i kursen får bli ett sommarjobb till nästa gång kanske.