Получение ошибки TS2304: не удается найти имя 'Buffer'

Я пытаюсь сделать base64 кодирования в NodeJS, используя TypeScript.

Следующий код прекрасно работает в JavaScript.

Когда я пишу то же самое в TypeScript и компилирую, я получаю сообщение об ошибке Buffer not find.

var base64Policy = new Buffer(stringPolicy, 'utf-8').toString('base64');

Может ли кто-нибудь помочь мне сделать то же самое в TypeScript.

Ответы на вопрос(3)

Решение Вопроса

Добавьте эту строку вверху:

declare const Buffer

и он должен компилироваться без ошибок.

В объявлениях требуется использовать встроенные в библиотеки ноды или другие глобальные объекты, вы можете объявить их вручную, как описано выше.

В новой версии Typescript вы также можете использовать официальные файлы объявлений:

npm i -g [email protected]
npm i --save-dev @types/node

для других библиотек установите@types/library_name.

больше деталей:Улучшить сбор файлов декларации, Будущее файлов декларации

 Keerthivasan04 авг. 2017 г., 09:42
Я думаю, что это будет подходящим -npm i --save-dev @types/node, Dev зависимости!
 DarkKnight05 авг. 2017 г., 11:12
Обновил это. благодарю вас!
 Vick_Pk10 апр. 2019 г., 07:32
не решил проблему

пролог

буфер является частьюNode.js API, Поскольку TypeScript по умолчанию не знает классов из Node.js, вам необходимо установитьфайлы декларации (определения типов) для Node.js.

Если вы видите следующую ошибку, вам придется установить определения типов вручную:

ошибка TS2304: не удается найти имя 'Buffer'.

Установка определений типов

Вы можете установить определения типов, используятипизации инструмент. Я покажу вам, как это сделать:

Установитеtypings инструмент с npm:

npm install -g typings

Установите определения типов для Node.js изDefinitelyTyped (~dt) хранилище:

typings install dt~node --global --save

Инструмент набора текста создаст следующий каталог "typings/globals/node"и связать это в"typings/index.d.tsMsgstr "Также будет файл с именемtypings.json (из-за--save опция), которая ссылается на определения разрешенного типа:

{
  "globalDependencies": {
    "node": "registry:dt/node#6.0.0+20160621231320"
  }
}

Примечание. Если вы видите ошибку «typings \ globals \ node \ index.d.ts (71,26): ошибка TS1110: тип ожидается», значит, ваше определение Node.js слишком свежо. Инструмент ввода имеетпроблемы с последними объявлениями типов, В таком случае, просто проверьте версию в вашемtypings.json файл. Для меняnode#6.0.0+20160621231320 работал ноnode#6.0.0+20161212163245 не было.

Теперь все, что вам нужно сделать, это добавитьindex.d.ts какдиректива с тройным слешем в вашем коде (который используетBuffer учебный класс):

YourClass.ts

/// <reference path="../../typings/index.d.ts" />

export class YourClass {

  private static toString(encoded: string): string {
    return new Buffer(encoded, "base64").toString();
  }

}

ОБНОВИТЬ:

Свыпуск TypeScript 2.0 была объявлена ​​новая система определений типов.

Теперь вы можете забыть оtypings инструмент. Все, что вам нужно сделать, это запустить эту команду для установкиОпределения TypeScript для Node.js:

npm install --save @types/node

Также убедитесь, что у вас есть следующие записи в вашемtsconfig.json:

{
  "compilerOptions": {
    "moduleResolution": "node",
    ...
  },
  "exclude": [
    "node_modules",
    ...
  ]
}

Постскриптум Если вам нужны определения типов для других классов (кроме включенных в Node.js), вы можете найти их здесь:http://microsoft.github.io/TypeSearch/

 JasonPerr25 окт. 2017 г., 00:21
Я боролся с этим в течение нескольких дней, и это первый раз, когда я видел решение, которое на самом деле работает со средой Windows 10. Спасибо!
 JasonPerr25 окт. 2017 г., 01:06
К сожалению, как бы хорошо это ни было для исправления моих проблем со средой Windows, это сломало среды OSX. ; (Получение ошибки машинописного текста: Ошибка машинописного текста Последующие объявления переменных должны иметь один и тот же тип. Переменная 'extensions' должна иметь тип 'any', но здесь имеет тип 'NodeExtensions'.

Буфер отNode Пространство имен. Первая установка

npm install --save @types/node

затем добавьте приведенный ниже код в файл tsconfig.json внутриcompilerOptions раздел

"types": ["node"],
"typeRoots": ["node_modules/@types"]

typeRoots определяет список каталогов для файлов определения типа, которые будут включены. Требуется TypeScript версии 2.0 или выше.

 Jeremy Walters22 янв. 2019 г., 06:53
Установка @ тип / узелnpm install --save @types/nodeне было достаточно. Я должен был добавить"types": ["node"] к моемуtsconfig.json, Спасибо
 zakaria amine28 июн. 2019 г., 16:47
Я выполнил все шаги, но все еще получаю ошибку
 zakaria amine28 июн. 2019 г., 16:55
Я нашел решение, (я использую Angular),src/tsconfig.app.json должен быть обновлен, а неtsconfig.jsonВот ссылка на проблему в Github:github.com/aws/aws-sdk-js/issues/1271#issuecomment-320352814

Ваш ответ на вопрос