Dabbling with NodeJS again and this time bump into a bumpy road trying to make require to work with type module.
Basically trying to add the line below
"type" : "module"
into package.json to utilize the import function of JavaScript by including the above type.
{
"name": "nodejs",
"version": "1.0.0",
"description": "",
"main": "server.js",
"type": "module",
"author": "",
"license": "ISC",
"dependencies": {
"excel4node": "^1.7.2",
"express": "^4.17.1",
"mssql": "^6.3.0"
}
}
After looking through few JavaScript tutorials (after dabbling a lot on Java, decided it’s time to move on to other skill sets), I find writing in NodeJS easier.
Type Module Is Not Working
I have summarize the following after trying some things.
Do Not Use Import… from
Tried to do something like this for my JavaScript
import {firstSQLFunction} from './Promise1.js';
promise2 = firstSQLFunction(worksheet2,style);
Promise1.js
export function firstSQLFunction(worksheet2, style) {
var returnPromise1 = new Promise(function(resolve, reject) {
// bunch of codes
if(true) {
resolve('Completed SQL 2');
} else {
reject('connection2 refused');
}
});
});
return returnPromise1;
}
The above should work, but there is a problem. You would not be able to use require in your NodeJS project after that.
var express = require('express');
var app = express();
The below error message would appear if you tried doing so.
ReferenceError: require is not defined
Conclusion
If you are using require, please refrain from adding “type”: “module” into your package.json as this will interfere with each other. If you really and really need to use “type”: “module”, then you should use import from instead of require.
This is because it is either/or usage of these two. That is because one is a ESM and one is
ESM (EcmaScript modules) is a newer system which has been added to the JavaScript specification. Browsers already support ES modules, and Node is adding support
HacksMozilla
CJS is short for CommonJS. Here is what it looks like: //importing const doSomething = require(‘./doSomething.js‘); //exporting module. exports = function doSomething(n) { // do something } Some of you may immediately recognize CJS syntax from node
Dev.To
So What Did I Do?
I decided that I should just move on and go with the new syntax of using the CJS way of doing it. So that meant I would not be using anymore Type Module in my JavaScript.
module.exports = {
firstSQLFunction: (worksheet2, style) => {
var returnPromise1 = new Promise((resolve, reject) => {
if(true) {
resolve('Completed SQL 2');
} else {
reject('connection2 refused');
}
});
return returnPromise1;
}
}
The above script is now clean and we can now focus on using just CJS styled JavaScript. What do you know, it’s good to pick up more skills and prove you’re still in the know. This will ensure you are still relevant in the modern technology world.
I will go start moving into YouTube as well in the future for more exposure. Till then I will continue to write my findings and journey in this technology blog.
Stay tune.
