ts- नोड मॉड्यूल आयात और मॉड्यूल परिभाषित मॉड्यूल के साथ टाइपस्क्रिप्ट निष्पादित करता है
मैं टाइपस्क्रिप्ट के माध्यम से डेटाबेस बेस को इनिशियलाइज़ करने की कोशिश करता हूं।
मेरे टीएस की तरह है:
import { User, UserRole } from '../entity/User';
import crypto from 'crypto';
import {dbManager, pwhash } from '..';
async function inituser()
{
const user = new User();
user.email = '[email protected]';
user.own_organization = []
user.salt = crypto.randomBytes(16).toString('hex');
user.password = pwhash("password", user.salt);
user.role = UserRole.admin;
await dbManager.save(user);
const duser = await dbManager.findOne(User);
return duser;
}
const duser = inituser();
console.log("Loaded users: ", duser);
जब मैं स्क्रिप्ट को ts-नोड द्वारा चलाने का प्रयास करता हूं जैसे:
npx ts-node db/initializers/inituser.ts
इसके लिए त्रुटि है:
SyntaxError: Cannot use import statement outside a module
at wrapSafe (internal/modules/cjs/loader.js:1167:16)
at Module._compile (internal/modules/cjs/loader.js:1215:27)
at Module.m._compile (/usr/lib/node_modules/ts-node/src/index.ts:858:23)
at Module._extensions..js (internal/modules/cjs/loader.js:1272:10)
at Object.require.extensions.<computed> [as .ts] (/usr/lib/node_modules/ts-node/src/index.ts:861:12)
at Module.load (internal/modules/cjs/loader.js:1100:32)
at Function.Module._load (internal/modules/cjs/loader.js:962:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at main (/usr/lib/node_modules/ts-node/src/bin.ts:227:14)
at Object.<anonymous> (/usr/lib/node_modules/ts-node/src/bin.ts:513:3)
root@MEDAIHILW237:/mnt/c/workgit/projeny# ts-node db/initializers/inituser.ts
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for /mnt/c/workgit/projeny/db/initializers/inituser.ts
at Loader.defaultGetFormat [as _getFormat] (internal/modules/esm/get_format.js:65:15)
at Loader.getFormat (internal/modules/esm/loader.js:101:42)
at Loader.getModuleJob (internal/modules/esm/loader.js:230:31)
at Loader.import (internal/modules/esm/loader.js:164:17)
at Object.loadESM (internal/process/esm_loader.js:68:5)
root@MEDAIHILW237:/mnt/c/workgit/projeny# ts-node db/initializers/inituser
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for /mnt/c/workgit/projeny/db/initializers/inituser.ts
at Loader.defaultGetFormat [as _getFormat] (internal/modules/esm/get_format.js:65:15)
at Loader.getFormat (internal/modules/esm/loader.js:101:42)
at Loader.getModuleJob (internal/modules/esm/loader.js:230:31)
at Loader.import (internal/modules/esm/loader.js:164:17)
at Object.loadESM (internal/process/esm_loader.js:68:5)
मैं "type" जोड़ता हूं: package.json फ़ाइल में "मॉड्यूल"।
{
"name": "typescript-test",
"version": "1.0.0",
"type": "module",
...
}
की त्रुटि को दूर करने के लिए
(node:3854) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
जवाब
त्रुटि Warning: To load an ES module, set "type": "module" in the package.json or
ts-node में निम्नलिखित बग के कारण होती है:https://github.com/TypeStrong/ts-node/issues/935
बग बंद है, और इसे हल करने के लिए एक प्रस्ताव है, लेकिन यह अभी भी खुला है: https://github.com/TypeStrong/ts-node/issues/1007
मुझे "type": "module"
अंदर की जगह का package.json
उपयोग "module": "commonjs"
करने की आवश्यकता नहीं "module": "es6",
है tsconfig.json
। मैंने इसे तकनीकी ऋण के रूप में नोट किया कि ts-node समस्या # 1007 हल है।