mysql - 'Kan inte hitta modul' vid import i TypeScript
Jag har ett litet problem med att importera Node.js-moduler. För http-modulen fungerar denna syntax bra:
import * as http from "http";
Men när jag försöker göra samma sak med 'mysql2' node.js-modul:
import * as database from "mysql2";
Jag fick ett fel:
Cannot find module 'mysql2'
Och vägra att kompilera den raden. Jag försökte till och med syntax som denna (vet inte varför):
import {database} from 'mysql2';
Men det är inget fel bara när jag skriver så här:
let database = require('mysql2');
I tsconfig.json har jag ställt in:
"module": "commonjs",
"moduleResolution": "node",
Och naturligtvis har jag redan installerat modulerna genom npm i projektmappen:
npm install mysql2 --save
Så min fråga är, varför fungerar inte importen och jag får ett fel i Visual Studio Code?
Svar #1
Jag tror att importen inte fungerar eftersom du saknar TypeScript-definitioner för mysql2. Du har inte publicerat din typings.json (eller tsd.json) men jag antar att för Node.js har du importerat definitioner, men inte för mysql2, därför kan du importera 'http' med 'import from'-syntax och med mysql2 måste du använda vanlig JavaScript Node.js 'require' för att importera den.
Svar #2
Installera TypeScript-typdefinitionen för mysql2 på följande sätt:
npm install --save-dev types/mysql2#semver:versionvar version är ditt val.
Till exempel:
npm i --save-dev types/mysql2#semver:^1.0.0