اشکالزدایی - چگونه کد TypeScript سمت سرور را در WebStorm اشکالزدایی کنیم


اگر این را با Visual Studio Code مقایسه کنید، تنها کاری که باید انجام دهید این است که نقشههای منابع را فعال کنید و VSCode میتواند TypeScript را دیباگ کند، با این حال من نمیتوانم همان را در WebStorm انجام دهم.

من میتوانم بهراحتی جاوااسکریپت سمت سرور را در WebStorm اشکالزدایی کنم اما نه تایپاسکریپت

پاسخ شماره ۱

برای هر کسی که با دیباگ کردن TypeScript در WebStorm/IDEA دست و پنجه نرم میکند، من نیز مشکلات مشابهی با نویسنده اصلی داشتم (احتمالاً به دلایل متفاوت). مشکل من به سادگی این بود که دایرکتوری کاری را در تنظیمات اجرای Node به پوشه dist تنظیم نکرده بودم. من در حال اجرای تستها در Jest بودم و فرض میکردم دایرکتوری کاری باید ریشه پروژه من باشد. آن را به dist تنظیم کردم و دیباگ کردن شروع به کار کرد!

اطلاعات بیشتر...

فایلهای .ts منبع در src

نسخه تایپاسکریپت: ۲.۰.۳

فایل tsconfig.json:

{
  "compilerOptions": {
    "jsx": "react",
    "module": "commonjs",
    "noImplicitAny": false,
    "outDir": "dist",
    "preserveConstEnums": true,
    "removeComments": true,
    "sourceMap": true,
    "target": "es6",
    "moduleResolution": "node"
  },
  "exclude": [
    "node_modules",
    "dist"
  ]
}

پیکربندی Jest (در package.json):

  "jest": {
    "scriptPreprocessor": "<rootDir>/node_modules/ts-jest/dist/preprocessor.js",
    "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx)$",
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js"
    ]
  }

اجرای پیکربندی...

دایرکتوری کاری: <project_root>/dist

فایل جاوااسکریپت: ../node_modules/jest-cli/bin/jest.js

پارامترهای برنامه: --runInBand

امیدوارم مفید باشد!

پاسخ شماره ۲

در تلاش بودم تا راهی پیدا کنم که Webstorm/Intellij فایل TS را مانیتور کند و سرور را در حالت دیباگ مجدداً راهاندازی کند. به نظر میرسد ts-node-dev که به نظر من از nodemon سریعتر است از نظر بارگذاری زنده، زیرا فرآیند کامپایل Typescript را بین راهاندازیهای مجدد به اشتراک میگذارد.

npm i ts-node-dev --save-dev

سپس در Run/Debug Configuration خود، یک پیکربندی node.js با پارامترهای زیر اضافه کنید:

JavaScript file ---> node_modules/ts-node-dev/lib/bin.js
Applicationi parameters ---> --respawn -- src/script/local.server.ts

حال پیکربندی را ذخیره کنید و با Debug اجرا کنید، شما باید بتوانید نقطه توقف را تنظیم کرده و سرور را در صورت هر تغییر کد TS به صورت زنده بارگذاری مجدد کنید.

من یک کتابخانه کوچک برای این موضوع آماده کردم اگر اتفاقی با aws lambda توسعه دهید

https://github.com/vcfvct/ts-lambda-local-dev