I want to run several code before the code inside import syntax gets executed.
Example
file-1.js
console.log('Inside File 1')
import './file-2.js'
file-2.js
console.log('Inside File 2')
Output
Inside File 2
Inside File 1
The output I expected
Inside File 1
Inside File 2
Environment
Node JS v12.19.0 with Module configuration
Real Case
file-1.js
process.env.SHARED_DATA = 'Hello world'
import './file-2.js'
file-2.js
console.log(process.env.SHARED_DATA)
Output
undefined
You can define the env data in separate file. The import syntax will run in the order against the other imports as @loganfsmyth says.
Example
main.js
console.log('Inside main.js file')
import './set-env.js'
import './file.js'
set-env.js
console.log('Inside set-env.js file')
process.env.SHARED_DATA = 'Hello world'
file.js
console.log(process.env.SHARED_DATA)
Output
Inside set-env.js file
Hello world
Inside main.js file
In JavaScript the lines don't necesarily wait for the line before to end. One way to solve this issue of yours is to put the file-1.js into a async function:
async function f() {
process.env.SHARED_DATA = "Hello world";
return Promise.resolve(1);
}
f().then(() => {import "./file-2.js"});
By calling this function you can make sure the import waits for the f function to end! Then running the arrow function. Hope this helped if you want to read more about this topic here you go. https://javascript.info/async-await