ts-node-dev не применяет изменения в автоматической перезагрузке - PullRequest
2 голосов
/ 29 мая 2020

Я создал приложение с использованием Feathers JS в Typescript, но хотя nodemon для машинописного текста (ts-node-dev) сообщает, что сервер перезапустился при изменении файла машинописного текста, изменение не применяется. Мне всегда нужно убить приложение и начать заново, чтобы увидеть изменения.

Вот журнал:

[INFO] 15:43:51 Restarting: C:\api\src\models\favorites.model.ts has been modified
Using ts-node version 7.0.1, typescript version 3.9.3
info: Feathers application started on http://localhost:3030

Вот сценарий dev в пакете. json:

ts-node-dev --no-notify src/

Вот tsconfig. json:

{
  "compilerOptions": {
    "target": "es2018",
    "module": "commonjs",
    "outDir": "./lib",
    "rootDir": "./src",
    "strict": true,
    "esModuleInterop": true
  },
  "exclude": [
    "test"
  ]
}

А вот и пакет. json:

{
  "homepage": "",
  "private": true,
  "main": "src",
  "keywords": [
    "feathers"
  ],
  "contributors": [],
  "bugs": {},
  "directories": {
    "lib": "src",
    "test": "test/",
    "config": "config/"
  },
  "engines": {
    "node": "^12.0.0",
    "npm": ">= 3.0.0"
  },
  "scripts": {
    "test": "npm run compile && npm run mocha",
    "dev": "ts-node-dev --no-notify src/",
    "start": "npm run compile && node lib/",
    "mocha": "ts-mocha \"test/**/*.ts\" --recursive --exit",
    "compile": "shx rm -rf lib/ && tsc"
  },
  "prettier":{
    "singleQuote": true
  },
  "standard": {
    "env": [
      "mocha"
    ],
    "ignore": []
  },
  "types": "lib/",
  "dependencies": {
    "@feathersjs/authentication": "^4.5.3",
    "@feathersjs/authentication-local": "^4.5.4",
    "@feathersjs/authentication-oauth": "^4.5.4",
    "@feathersjs/configuration": "^4.5.3",
    "@feathersjs/errors": "^4.5.3",
    "@feathersjs/express": "^4.5.4",
    "@feathersjs/feathers": "^4.5.3",
    "@feathersjs/transport-commons": "^4.5.3",
    "compression": "^1.7.4",
    "cors": "^2.8.5",
    "feathers-mongoose": "^8.3.0",
    "helmet": "^3.22.0",
    "mongodb-core": "^3.2.7",
    "mongoose": "^5.9.16",
    "serve-favicon": "^2.5.0",
    "winston": "^3.2.1"
  },
  "devDependencies": {
    "@types/compression": "^1.7.0",
    "@types/cors": "^2.8.6",
    "@types/helmet": "0.0.47",
    "@types/jsonwebtoken": "^8.5.0",
    "@types/mocha": "^7.0.2",
    "@types/mongoose": "^5.7.21",
    "@types/serve-favicon": "^2.5.0",
    "axios": "^0.19.2",
    "mocha": "^7.2.0",
    "nodemon": "^2.0.4",
    "shx": "^0.3.2",
    "ts-mocha": "^7.0.0",
    "ts-node-dev": "^1.0.0-pre.44",
    "tslint": "^6.1.2",
    "typescript": "^3.9.3"
  }
}

Ответы [ 2 ]

2 голосов
/ 05 июля 2020
Ответ

ionut-t - жизнеспособный обходной путь, однако вопрос хороший и не дает ответа. Это решение по существу обходит аспект ts-node ts-node-dev и просто использует его для перезагрузки, что упускает все преимущества ts-node-dev. ИМХО, либо что-то не так с ts-node-dev, либо как перья js настроили его из коробки, и я предполагаю, что это будет решено тем или иным способом в ближайшее время (если еще не сделано).

ОБНОВЛЕНИЕ:

Я был прав ... после обновления ts-node-dev теперь он работает отлично, в одном терминале.

Обновите с помощью: npm i --save-dev ts-node-dev

  • Неработающая версия была 1.0.0-pre.44
  • Я использую фиксированную версию 1.0.0-pre.50
2 голосов
/ 29 мая 2020

Вы должны указать компилятору следить за изменениями. Добавьте следующий скрипт или настройте свой compile скрипт с помощью флага просмотра:

"watch-ts": "tsc -w"

или

"compile": "shx rm -rf lib/ && tsc -w"

Я внимательно изучил ваши скрипты, и мне кажется, что вы должен запустить ваш сервер из скомпилированных файлов (которые, я думаю, находятся в папке lib). Если это правда, ваш сценарий для запуска сервера должен быть, например:

"dev": "ts-node-dev --no-notify lib/server.js"

И вам нужно запустить на двух отдельных вкладках терминала:

npm run compile

и

npm run dev
...