Я пытаюсь запустить и запустить мое первое приложение TypeScript и DefiniteTyped Node.js, и из-за некоторых ошибок.
Я получаю сообщение об ошибке «TS2304: не удается найти имя« require »» при попытке перенести простую страницу TypeScript Node.js. Я прочитал несколько других случаев этой ошибки в переполнении стека, и я не думаю, что у меня есть подобные проблемы. Я запускаю в командной строке приглашение:
tsc movie.server.model.ts.
Содержимое этого файла:
'use strict';
/// <reference path="typings/tsd.d.ts" />
/* movie.server.model.ts - definition of movie schema */
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var foo = 'test';
Ошибка брошена на var mongoose=require('mongoose')
линии.
Содержимое файла typings / tsd.d.ts:
/// <reference path="node/node.d.ts" />
/// <reference path="requirejs/require.d.ts" />
Ссылки на файл .d.ts были помещены в соответствующие папки и добавлены в typings / tsd.d.ts с помощью команд:
tsd install node --save
tsd install require --save
Созданный файл .js, кажется, работает нормально, поэтому я мог проигнорировать ошибку. Но я был бы признателен, зная, почему возникает эта ошибка и что я делаю неправильно.
источник
when I attempt to transpile a simple ts node page
<Как дела ... какая утилитаimport { mongoose } from 'mongoose'
?Ответы:
Быстро и грязно
Если у вас есть только один файл, использующий require, или вы делаете это для демонстрационных целей, вы можете определить require в верхней части вашего файла TypeScript.
TypeScript 2.x
Если вы используете TypeScript 2.x, вам больше не нужно устанавливать Typings или Определенно набранные. Просто установите следующий пакет.
Будущее файлов декларации (15.06.2016)
Проверьте или измените ваш файл src /tsconfig.app.json так, чтобы он содержал следующее:
Убедитесь, что файл находится в папке src, а не в корневой папке приложения.
По умолчанию любой пакет в @types уже включен в вашу сборку, если вы не указали ни один из этих параметров. Читать далее
TypeScript 1.x
Используя наборы (замена DefiniteTyped), вы можете указать определение непосредственно из репозитория GitHub.
Установить набор текста
Установите определение типа requireJS из репозитория DefiniteType
Webpack
Если вы используете Webpack в качестве инструмента сборки, вы можете включить типы Webpack.
Установка npm --save-dev @ types / webpack-env
Обновите ваш
tsconfig.json
со следующим подcompilerOptions
:Это позволяет вам выполнять
require.ensure
и другие специфичные для Webpack функции.Угловой CLI
С CLI вы можете выполнить шаг Webpack выше и добавить блок «types» к вашему
tsconfig.app.json
.В качестве альтернативы вы можете использовать предустановленные
node
типы. Имейте в виду, что в ваш клиентский код будут включены дополнительные типы, которые на самом деле недоступны.источник
Unable to find "require" ("npm") in the registry
. Требуется ли часть большего набора типографий nodeJS?require
. возможно, это правильный ответ для некоторой вариации выходной цели ES5, но не для общего случая.@types/node
- определения TypeScript. Узел не включает их, и они не должны.Для TypeScript 2.x теперь есть два шага:
Установите пакет, который определяет
require
. Например:Скажите TypeScript включить его глобально в
tsconfig.json
:Второй шаг важен, только если вам нужен доступ к глобально доступным функциям, таким как
require
. Для большинства пакетов вы должны просто использоватьimport package from 'package'
шаблон. Нет необходимости включать каждый пакет в массив типов tsconfig.json выше.источник
"types": ["jasmine", "hammerjs"]
кtsconfig.js
я мастерил добавитьnode
в колодце. Спасибо Джордан.import express from "express";
теперь говорит мне, что мне нужно попробовать установить @ types / express или добавить для нее файл .d.ts.@types/...
чем просто@types/node
папка не добавлять"types": ["node"]
вtsconfig.json
потому , что машинопись compiller опускает другие , не упомянутые пакеты. Это нарушит разрешение ваших типов IDE. Это написано здесь typescriptlang.org/docs/handbook/...Вы можете
Или, для более всесторонней поддержки, используйте requiretify.y.
Кроме того, вместо
var mongoose = require('mongoose')
, вы можете попробовать следующееисточник
use strict
в TypeScript: базовый ответ и «Use Strict», необходимые в файле TypeScript? , Нужно использоватьuse strict
в TypeScript."use strict"
, я отредактирую свой ответЭтот ответ относится к современным настройкам (TypeScript 2.x, Webpack > 2.x)
Вам не нужно устанавливать @ types / node (который является типом Node.js и не имеет отношения к внешнему коду, фактически усложняя такие вещи, как setTimout, различные возвращаемые значения и т. Д.).
Вы делаете необходимость установки @ типов / WebPack-окр
npm i -D @types/webpack-env
которая дает подпись во время выполнения , что Webpack имеет ( в том числе
require
,require.ensure
и т.д.)Также убедитесь, что ваш файл tsconfig.json не имеет установленного массива 'types' ->, что позволит ему получать все определения типов в вашей папке node_modules / @ types.
Если вы хотите ограничить поиск типов, вы можете установить для свойства typeRoot значение node_modules / @ types.
источник
Вместо:
Пытаться:
т.е. ссылочный путь первым.
источник
В моем случае это была супер глупая проблема, когда параметр
src/tsconfig.app.json
переопределялсяtsconfig.json
.Итак, у меня было это в
tsconfig.json
:И этот в
src/tsconfig.app.json
:Я надеюсь, что кто-то найдет это полезным, так как эта ошибка вызывала у меня седые волосы.
источник
Просто для справки, я использую Angular 7.1.4 , TypeScript 3.1.6 , и единственное, что мне нужно сделать, это добавить эту строку в
tsconfig.json
:источник
npm i @types/node
а затем добавьтеnode
в поле типов в вашем tsconfig. сделал npm установить.Я нашел решение было использовать команду TSD:
Который добавляет / обновляет
typings/tsd.d.ts
файл, и этот файл содержит все определения типов, которые требуются для приложения узла.Вверху моего файла я поместил ссылку на
tsd.d.ts
это:Требование определяется по состоянию на январь 2016 года:
источник
Я взял ответ Питера Варги, чтобы добавить его,
declare var require: any;
и превратил его в универсальное решение, которое работает для всех файлов .ts в общем, используя preprocess-loader :установить препроцессор-загрузчик:
добавьте загрузчик в ваш webpack.config.js (я использую ts-загрузчик для обработки источников TypeScript):
Вы можете добавить более надежный require.d.ts таким же образом, но этого
declare var require: any;
было достаточно в моей ситуации.Обратите внимание, что в препроцессоре 1.0.5 есть ошибка , которая обрезает последнюю строку, поэтому просто убедитесь, что у вас есть дополнительный пробел в конце, и все будет в порядке.
источник
Я тоже боролся с этой проблемой. Я считаю , что это работает для всех кандидатов релиза аки гса , но я не сделал тест , хотя. Для @angular rc.2 это работает хорошо.
core-js
качестве зависимости npm вpackage.json
typings install core-js --save
"es6-shim"
происшествия в вашемpackage.json
. Тебе это больше не нужно.Ура!
источник
Убедитесь, что вы установили
npm i @types/node
источник
импорт * как мангуст из «мангуста»
источник
Иногда может отсутствовать "jasmine" из tsconfig.json. (TypeScript 2.X)
Так добавь
в ваш
tsconfig.json
файл.источник
электрон + Угловое 2/4 сложение:
Вдобавок к добавлению типа 'node' к различным файлам ts.config, в конечном итоге у меня сработало добавление следующего к
typings.d.ts
файлу:Обратите внимание, что мой случай развивается с Electron + Angular 2/4. Мне нужно было запросить глобальное окно.
источник
Для меня это решается добавлением типов в опции углового компилятора.
источник
Вы указали, какой модуль использовать для переноса кода?
tsc --target es5 --module commonjs script.ts
Вы должны сделать это, чтобы транспортер знал, что вы компилируете код NodeJS. Docs .
Вы должны также установить определения мангуста
tsd install mongoose --save
Не используйте
var
для объявления переменных (если в этом нет необходимости, что очень редко), используйтеlet
вместо этого. Узнайте больше об этомисточник
Просто в дополнение к ответу cgatian, для TypeScript 1.x
Если вы все еще видите ошибки, пожалуйста, укажите index.d.ts в опциях вашего компилятора.
источник
Я не мог получить ошибку 'require', чтобы уйти, используя любой из трюков выше.
Но я обнаружил, что проблема заключалась в том, что мои инструменты TypeScript для Visual Studio имели старую версию (1.8.6.0) и последнюю версию на сегодняшний день (2.0.6.0).
Вы можете скачать последнюю версию инструментов с:
TypeScript для Visual Studio 2015
источник
Если вы можете скомпилировать код, но Visual Studio 2015 помечает функции 'require', так как ошибки с текстом ошибки не могут найти имя 'require' или не могут разрешить символ 'require' , обновите TypeScript для Visual Studio 2015 до последней версии (на данный момент 2.1. 5) и обновите ReSharper (если вы его используете) как минимум до версии 2016.3.2.
У меня была эта досадная проблема какое-то время, и я не мог найти решение, но наконец решил ее таким образом.
источник
Добавьте следующее в
tsconfig.json
:источник
У меня есть еще один ответ, который основывается на всех предыдущих, которые описывают
npm install @types/node
и в том числеnode
вtsconfig.json / compilerOptions / types
.В моем случае у меня есть база
tsConfig.json
и отдельная в приложении Angular, которая расширяет эту:Моя проблема была пустой
types
в этомtsconfi.app.json
- это забивает тот в базовой конфигурации.источник
Если вы столкнулись с этой проблемой в файле .ts, который существует только для того, чтобы предоставить вам некоторые постоянные значения, то вы можете просто
и ошибка не придет снова.
источник