تایپاسکریپت - چگونه خطای SyntaxError: Cannot use import statement outside a module را رفع کنیم؟
من در همه اینها تازهکار هستم و سعی دارم بکاند Node + Typescript را به پروژه Angular خود اضافه کنم. اما بعد از وارد کردن express همیشه با خطا مواجه میشوم.
[ERROR] SyntaxError: Cannot use import statement outside a module.
پکیج.جیسان
{
"name": "server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"serve": "ts-node-dev server.ts",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"@types/express": "^4.17.11",
"express": "^4.17.1",
"ts-node": "^9.1.1",
"ts-node-dev": "^1.1.6",
"tslint": "^6.1.3",
"typescript": "^4.2.4"
},
}
tsconfig.json
{
"compilerOptions": {
"target": "ESNEXT",
"module": "commonjs",
"strict": false,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
}
}
server.ts
import * as express from 'express';
const app = express();
app.listen(4201, '127.0.0.', function() {
console.log('Server is listening on port 4201');
});
من این را بررسی کردهام و رایجترین راهحل اضافه کردن "type": "module" به package.json بود که من این کار را انجام دادم. همچنین میدانم که این فقط از Node 13 به بعد کار میکند و من Node: 14.15.5 دارم.
پاسخ شماره ۱
بهترین روش برای وارد کردن ماژولهای نود استفاده از require() است. شما میتوانید ماژولهای هستهای داخلی نود، ماژولهای npm و همچنین ماژولهای محلی را با استفاده از تابع require() وارد کنید. در مورد شما، از const express=require("express") به جای import * as express from 'express' استفاده کنید و "type":"module" را از package.json خود حذف کنید. به من اطلاع دهید که آیا این برای شما کار میکند.