Типовые ошибки с fs, буфером и потоком

#node.js #angular #typescript

#node.js #angular #typescript

Вопрос:

Меня зовут Джордж, и я начинающий программист в angular, и у меня проблемы с Typescript и TypeORM.

Когда я компилирую код, выдает мне эти ошибки

node_modules/typeorm/driver/mongodb/MongoConnectionOptions.d.ts(53,33): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

node_modules/typeorm/driver/mongodb/MongoConnectionOptions.d.ts(58,33): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

node_modules/typeorm/driver/mongodb/MongoConnectionOptions.d.ts(63,32): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

node_modules/typeorm/driver/mongodb/MongoConnectionOptions.d.ts(68,33): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(92,13): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(294,19): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(298,15): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(302,14): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(306,15): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(365,19): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(369,15): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(373,14): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(377,15): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(416,19): error TS2580: Cannot find name ‘Buffer’. Do you need to install type definitions for node? Try npm i @types/node and then add node to the types field in your tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(420,15): error TS2580: Cannot find name ‘Buffer’. Do you need to install type definitions for node? Try npm i @types/node and then add node to the types field in your tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(424,14): error TS2580: Cannot find name ‘Buffer’. Do you need to install type definitions for node? Try npm i @types/node and then add node to the types field in your tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(428,15): error TS2580: Cannot find name ‘Buffer’. Do you need to install type definitions for node? Try npm i @types/node and then add node to the types field in your tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(1591,25): error TS2580: Cannot find name ‘Buffer’. Do you need to install type definitions for node? Try npm i @types/node and then add node to the types field in your tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(1636,45): error TS2580: Cannot find name ‘Buffer’. Do you need to install type definitions for node? Try npm i @types/node and then add node to the types field in your tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(1647,19): error TS2580: Cannot find name ‘Buffer’. Do you need to install type definitions for node? Try npm i @types/node and then add node to the types field in your tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(4233,34): error TS2580: Cannot find name ‘Buffer’. Do you need to install type definitions for node? Try npm i @types/node and then add node to the types field in your tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(4317,21): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(4478, 34): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(4526,21): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(4595,34): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

node_modules/typeorm/driver/mongodb/typings.d.ts(4627,21): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

node_modules/typeorm/platform/PlatformTools.d.ts(2,28): ошибка TS2307: не удается найти модуль ‘fs’.

node_modules/typeorm/platform/PlatformTools.d.ts(4,36): ошибка TS2307: не удается найти модуль ‘stream’.

node_modules/typeorm/platform/PlatformTools.d.ts(38,44): ошибка TS2580: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.**

это мой файл tsconfig

 {
  "compilerOptions": {
  "lib": [
     "es5",
     "es6",
     "dom"
  ], 
  "target": "es5",      
  "module": "commonjs",
  "moduleResolution": "node",
  "outDir": "./build",
  "emitDecoratorMetadata": true,
  "experimentalDecorators": true,
  "sourceMap": true,
  "types": [
     "node"
  ],
  "typeRoots": ["node_modules/@types"]
  
  },
 "exclude": [
    "node_modules",
  ]
}
  

Почему эта ошибка?

Ответ №1:

У меня была очень похожая ошибка с проектом Ionic / Angular 7 и AWS amplify. Вот часть выходных данных об ошибке:

 ...
[ng] ERROR in node_modules/aws-sdk/clients/acm.d.ts(133,37): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i @types/node`.
[ng] node_modules/aws-sdk/clients/acm.d.ts(135,38): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i @types/node`.
[ng] node_modules/aws-sdk/clients/acm.d.ts(469,32): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i @types/node`.
[ng] node_modules/aws-sdk/clients/acm.d.ts(471,32): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i @types/node`.
[ng] node_modules/aws-sdk/clients/acmpca.d.ts(283,37): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i @types/node`.
[ng] node_modules/aws-sdk/clients/acmpca.d.ts(285,38): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i @types/node`.
[ng] node_modules/aws-sdk/clients/acmpca.d.ts(353,25): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i @types/node`.
[ng] node_modules/aws-sdk/clients/apigateway.d.ts(1150,23): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i @types/node`.
[ng] node_modules/aws-sdk/clients/appsync.d.ts(248,23): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i @types/node`.
[ng] node_modules/aws-sdk/clients/clouddirectory.d.ts(1571,38): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i @types/node`.
[ng] node_modules/aws-sdk/clients/cloudsearchdomain.d.ts(7,24): error TS2307: Cannot find module 'stream'.
...
  

К сожалению, следование инструкциям, предложенным в ошибке, не было моим решением.
Вместо этого мне пришлось отредактировать tsconfig.app.json файл и полностью удалить пустые типы "types": []

Таким образом, раньше это было так:

 {
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "types": []
  },
  "exclude": [
    "test.ts",
    "**/*.spec.ts"
  ]
}
  

и стало вот так:

 {
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app"
  },
  "exclude": [
    "test.ts",
    "**/*.spec.ts"
  ]
}
  

Если у вас есть записи в массиве types, то проблемы нет, и у вас не должно возникнуть ранее описанной ошибки.

Это появляется, когда массив пуст.

Комментарии:

1. @OP в принципе, пустой "types": [] in tsconfig.app.json может перезаписываться, tsconfig.json поэтому удаление "types": [] работает. Альтернативно помещать типы непосредственно в tsconfig.app.json , а не в tsconfig.json

Ответ №2:

попробуйте подобное в tsconfig.app.json

 {
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"types": [
  "node"
 ],
},
"exclude": [
 "test.ts",
 "**/*.spec.ts"
]}
  

Ответ №3:

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

Как следует из ошибок, вы можете получить эти файлы, введя npm install @types/node .

Обновить

Согласно этому: Приложению не удается выполнить сборку — буфер не найден #4487

Возможно, вам придется добавить "node" в свой "types" в tsconfig, вот так:

   "compilerOptions": {
    [...]
    "types": ["node"]
  },
  

Комментарии:

1. Если бы вы могли показать нам часть вашего кода, мы могли бы взглянуть на него. У вас все еще могут возникнуть проблемы из-за отсутствия импорта.

2. это вообще не работает. ни установить, ни переустановить — у меня такая же ошибка с MongoDB, которая мне не нужна — typeorm берет все материалы и не заботится, нужно вам это или нет. node_modules/typeorm/driver/mongodb /MongoConnectionOptions.d.ts:74:32 — ошибка TS2591: не удается найти имя ‘Buffer’. Вам нужно установить определения типов для узла? Попробуйте, npm i @types/node а затем добавьте node в поле типы в вашем tsconfig.

3. Добавление «types»: [«node»] в параметры компилятора имело для меня решающее значение.