машинописный текст с сокетом IO сборки, решение проблем неиспользуемых операторов require - PullRequest
0 голосов
/ 21 апреля 2019

Я только начал изучать машинопись, и при переносе кода моего узла js-сервера в машинопись я столкнулся с несколькими проблемами (или вопросами).

  1. Я не знаю почему, но когда я смотрю учебники по машинописи, большинство преподавателей используют пряжу вместо npm. это почему? Я только что узнал и знаю, что пряжа немного быстрее и имеет некоторые другие преимущества, но есть ли причина, почему приложения для машинописи лучше подходят для пряжи, чем для npm?

  2. при написании машинописного приложения учителя устанавливают зависимости с префиксом @ types /, а также без префикса. Я думаю, тот, что с @types - это тот же модуль, написанный на машинописи. тогда почему они устанавливают оба? Разве недостаточно только машинописного текста?

  3. не было бы хорошо просто использовать модуль не @types, так как JavaScript совместим с Typescript?

  4. Я использую посылку для создания приложения для машинописи. И в модуле с именем engine.io (вероятно, установленным, потому что у меня есть socket.io в качестве зависимости), возникает ошибка сборки, говорящая, что он не может разрешить зависимость «uws».

 D:\NodeApps-valC\ToolboxWars - Parcel\node_modules\engine.io\lib\server.js:107:35: Cannot resolve dependency 'uws'
  105 |   var wsModule;
  106 |   switch (this.wsEngine) {
> 107 |     case 'uws': wsModule = require('uws'); break;
      |                                   ^
  108 |     case 'ws': wsModule = require('ws'); break;
  109 |     default: throw new Error('unknown wsEngine');
  110 |   }

Просто запуск с использованием узла index.js работает нормально. вероятно, потому что, когда скрипт выполняется, он на самом деле не проходит через строку, которая требует uws, но использует parcel. Я думаю, что компилятор ts пытается выяснить каждый модуль, который требуется оператором require (), даже если код никогда не выполняется. Я пишу об этом? Если так, что бы вы предложили. Я только что решил, добавив зависимость UWS, но это единственный способ?

Любая помощь будет очень благодарна.

Редактировать: Что касается вопросов 2 и 3, то после прочтения кода файлов ts node_modules / @ types я выяснил, что это скорее определения пространств имен и типов, чтобы сделать модуль js совместимым с ts, а не с версией ts.

1 Ответ

0 голосов
/ 21 апреля 2019

Что касается вопросов 2 и 3, после прочтения кода файлов ts node_modules / @ types я выяснил, что это скорее пространство имен и определения типов, чтобы сделать модуль js совместимым с ts, а не полностью переписанную версию ts модуля.

Проблема 4 не имела ничего общего с машинописью, скорее она была вызвана тем, что разработчик модуля обновил хранилище до пустого.Любой, у кого есть такая же проблема, может решить эту проблему, используя более старую версию модуля.https://github.com/socketio/socket.io/issues/3342

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...