Angular: невозможно использовать ключевое слово require - PullRequest
0 голосов
/ 16 апреля 2020

В моем приложении мне нужно использовать ключевое слово require для импорта чего-либо. Но я не могу. Ниже показана ошибка:

ERROR in src/app/components/test1/test1.component.ts:3:24 - error TS2591: Cannot find name 'require'. 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.

3 const {Pool, Client} = require('pg');

test1.component.ts

import { Component, OnInit } from '@angular/core';

const {Pool, Client} = require('pg');
const connectionString = 'postgressql;://postgres:1@localhost:3000/test1';

const client = new Client({connectionString});

client.connect();

client.query('select * from posts',
(err, res) => {console.log(err, res);
               client.end();
});


@Component({
  selector: 'app-test1',
  templateUrl: './test1.component.html',
  styleUrls: ['./test1.component.css']
})


export class Test1Component implements OnInit {

  constructor() {  }

  ngOnInit(): void {
  }
}

tsconfig. json

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "downlevelIteration": true,
    "experimentalDecorators": true,
    "module": "esnext",
    "moduleResolution": "node",
    "importHelpers": true,
    "target": "es2015",
    "lib": [
      "es2018",
      "dom"
    ],
    "types": [ "node" ],
    "typeRoots": [ "../node_modules/@types" ]
  },
  "angularCompilerOptions": {
    "fullTemplateTypeCheck": true,
    "strictInjectionParameters": true
  }
}

Укажите, что пошло не так

[Обратите внимание, что для этой части ошибки

Попробуйте npm i @types/node, а затем добавьте node в поле типов в вашем tsconfig.

я сделал npm install @ types / node --save, а затем добавил строки в tsconfig. json, но ошибка остается прежней]

1 Ответ

1 голос
/ 16 апреля 2020

Независимо от того, если вы даже можете использовать postgresql в браузере (что вы не можете). Чтобы импортировать такой пакет, вам нужно установить типы, а затем использовать оператор import:

npm i -D @types/pg
import { Pool, Client } from 'pg'; 

Позвольте мне еще раз повторить, что пакет pg только для среды node.js, а не для браузера:

Неблокирующий PostgreSQL клиент для Node.js

...