There is a way to do dynamic inline imports in node, detailed here: https://javascript.info/modules-dynamic-imports
This code has worked for me:
let {default: foo} = await import('./foo.js');
Here is a working example of a function I wrote as part of a db migration tool in node.
const getMigrations = async (path) => { const migrateDir = await fs.readdirSync(path); const migrations = await Promise.all(migrateDir.map(async (filename) => { let {default: migration} = await import(`${path}/${filename}`); return migration; })); migrations.sort((a, b) => { return a.seq - b.seq; }); return migrations; };
Where an example migration is like:
export default { seq: 1.1, label: 'create user table', sql: ` DROP TABLE IF EXISTS user; CREATE TABLE user ( ... ); ` };
I am using node v12.18.4 with "type": "module" in my package.json. When I run the script, I get a warning that the ESM module loader is experimental, but it works. However, there is a note on the page linked to above that says:
Dynamic imports work in regular scripts, they don’t require script type="module".
I hope this helps. I believe you should be able to apply this to your problem.
app.use("/user", user);app.use('/user', user);importandexporthave to be done at the outer lexical level, so you really cannot do what you're asking.