Как использовать модули npm из typescript?
я даю шанс на typescript. Он отлично работает на мировой сцене hello. Теперь я пытаюсь использовать модуль npm:
index.ts
=
import _ = require('lodash')
console.log(_.toUpper('Hello, world !'))
это не работает :
-
tsc index.ts
->Cannot find module 'lodash'. (2307)
-
node-ts index.js
->Cannot find module 'lodash'. (2307)
просмотр документации typescript и в google не помог. Другие вопросы S / O либо остаются без ответа (здесь и здесь) или несвязанный.
элементы :
- typescript 1.8 последние
- да, lodash установлен
npm i --save lodash
и существует в моей файловой системе (проверено) - Я тоже
typings i --save lodash
- вариантов
import * as _ from 'lodash'
илиconst _ = require('lodash')
не работает - Я попытался настроить tsconfig.параметры json, предложенные в других ответах
"moduleResolution": "node"
и"module": "commonjs"
как предложено в некоторых ответах, все еще не работает
как мы потребляем пакет npm в typescript ??
2 ответов
существует несколько способов импорта модулей из npm. Но если вы не получаете typings,tsc
всегда будет жаловаться, что он не может найти нужный вам модуль (даже если транспилированный js на самом деле работает).
-
если у вас есть typings и не использовать
tsconfig.json
используйтеreference
импортировать typings:/// <reference path="path/to/typings/typings.d.ts" /> import * as _ from 'lodash`; console.log(_.toUpper('Hello, world !'))
если вы используете
tsconfig.json
файл, убедитесь, что ваш файл typings включен (или нет исключено, ваш выбор), и сделайтеimport
как и в предыдущем примере.
в случае, когда нет typings. У вас есть два варианта: написать свой собственный на .d.ts
file или игнорировать проверку типа библиотеки.
чтобы полностью игнорировать проверку типа (это не рекомендуемый способ), импортируйте библиотеку в переменную типа any
.
const _: any = require('lodash');
console.log(_.toUpper('Hello, world !'))
tsc
будет жаловаться на то, что require
не существует. Обеспечивать node
typings, или declare
это, чтобы отбросить ошибку.
вы, вероятно, отсутствует Декларация Файлы.
посмотреть DefinitelyTyped для получения дополнительной информации.
попробуйте это:
npm install --save lodash
npm install --save @types/lodash
теперь вы можете импортировать.
import _ from 'lodash';
если импортируемый модуль имеет множественный экспорт, вы можете сделать это:
import { Express, Router } from 'express';
если модуль, который вы импортируете "не имеет экспорта по умолчанию" вам нужно сделать это:
import * as http from 'http';