Прежде чем вы спросите: Да, я искал - и нашел # 6334 - хотя это не решает мою проблему.
Я пишу веб-приложение, использующее Webpack. В результате мне нужен доступ к webpack-env.d.ts
во внешнем интерфейсе, но я также заинтересован в использовании модуля url
из Node (для url.parse
). Если мне требуются webpack-env.d.ts
и node.d.ts
в одном и том же файле ссылок, как и ожидалось, он сломается, потому что Node переопределяет require
. IOW, мне нужен доступ к node.d.ts
«s url
и модуль WebPack - х require
определение.
Я могу обойти это, используя const url: any = require('url')
, хотя это не идеально, и я хотел бы иметь типизацию для этого модуля. Другой вариант - разделить node.d.ts
на составляющие модули и сделать так, чтобы главный node.d.ts
требовал каждого отдельного модуля, хотя я не уверен, что это сломает что-нибудь у многих людей, которые полагаются на это. Файл объявления TypeScript - и я не особо хочу собирать его локально.
Какие-либо предложения?
Что ж, технически вы все еще не в среде узлов, и включать весь файл node.d.ts неправильно. Вы используете пакет npm, который действует так же, как "url" узла, но в среде браузера. Что вы можете сделать, так это извлечь эти типы из node.d.ts и создать отдельный url.d.ts, как вы уже предлагали. Простое разделение node.d.ts на более мелкие модули может не удовлетворить все потребности, потому что сигнатуры могут отличаться из-за различий в среде (буферы против массивов) или реализации. Я бы предложил независимую типизацию для этого пакета "url".
Я как бы столкнулся с той же проблемой, когда использую include typings/index.ts
в моем tsconfig.json
чтобы включить все типы ввода. При добавлении webpack-env.d.ts
и node
компилятор машинописного текста явно жалуется. Это можно обойти?
test_index.ts(1,28): error TS2339: Property 'context' does not exist on type 'NodeRequire'.
Я «решил» это с помощью создания отдельного файла типизации для модулей, специфичных для узла, которые я хотел использовать. К сожалению, это хитрость.
В итоге я полностью удалил webpack-env, так как для этого мне нужно было всего лишь один раз набрать текст во всем моем проекте. Надеюсь, так и будет. Я пробовал ваше решение, но мне действительно не нравится максимально загрязнять свои файлы ссылками. Спасибо за ответ
Саураб Шарма / Качественная инженерия
[email protected] / (925) -878-5722
Yammer, Microsoft
http://www.foklepoint.com
14 августа 2016 г. в 7:08 Дэн [email protected] написал:
Я «решил» это с помощью создания отдельного файла типизации для модулей, специфичных для узла, которые я хотел использовать. К сожалению, это хитрость.
-
Вы получили это, потому что прокомментировали.
Ответьте на это письмо напрямую, просмотрите его на GitHub или отключите обсуждение.
Конечно, я тоже :( Но, к сожалению, мне нужен был этот модуль. @Foklepoint
но что, если @types/node
является зависимостью другой зависимости (например, fs-extra
, jsdom
, shelljs
, tape
)?
также удалили webpack-env
и
if ((module as any).hot) {
...
😢
Самый полезный комментарий
но что, если
@types/node
является зависимостью другой зависимости (например,fs-extra
,jsdom
,shelljs
,tape
)?также удалили
webpack-env
и😢