I run an app with nodejs and typescript. It is my first step. While I want to deploy the backend app in heroku, I have an error (no error in localhost):
Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
Of course I've set "type": "module", but this time I have this error:
[ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts"
I've tried multiple solution proposed in different thread related to those error
Unfortunately, none of them works (reminder, it worked in local when I didn't use type:module)
Node version: v14.15.4
Here my tsconfig.json
{
"compilerOptions": {
/* Basic Options */
"target": "ESNext",
/* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
"sourceMap": true, /* Generates corresponding '.map' file. */
"strict": true, /* Enable all strict type-checking options. */
"allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
"esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
},
"include" : [
"src/**/*.ts" /* Include every ts file in source folder */
, "src/server..mjs"],
"exclude" : [
"node_modules" /* exclude everything in node_modules */
],
}
Here my package.json
{
"name": "backend-typescript",
"version": "1.0.0",
"description": "",
"main": "src/server.ts",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node src/server.ts",
"dev": "nodemon src/server.ts"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@types/body-parser": "^1.19.0",
"@types/cors": "^2.8.10",
"@types/express": "^4.17.12",
"@types/mongoose": "^5.11.97",
"@types/node": "^15.12.4",
"axios": "^0.21.1",
"body-parser": "^1.19.0",
"config": "^3.3.6",
"cors": "^2.8.5",
"dotenv": "^10.0.0",
"express": "^4.17.1",
"googleapis": "^78.0.0",
"http-status-codes": "^2.1.4",
"jsonwebtoken": "^8.5.1",
"moment": "^2.29.1",
"nodemon": "^2.0.7",
"passport": "^0.4.1",
"passport-google-oauth20": "^2.0.0",
"throat": "^6.0.1",
"typescript": "^4.3.4"
},
"devDependencies": {
"@types/config": "^0.0.38",
"@types/jsonwebtoken": "^8.5.2",
"@types/passport": "^1.0.6",
"@types/passport-google-oauth20": "^2.0.8"
}
}
Install ts-node
through npm and use the console to run ts-node nameoffile.ts
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With