TypeScript: прочитать аргументы из командной строки - ошибка TS2304: не удается найти имя 'process'
Использование TypeScript версии 1.7.5.
Я пишу программу nodeJS, в которой я хочу читать аргументы командной строки, переданные пользователем (2 целых числа). Все работает отлично в сыром JavaScript, но проблема возникает с помощью TypeScript.
Когда
process.argv
используется в файле TypeScript, когда он компилируется в JavaScript, ошибки компилятора, потому что он не распознает переменную процесса.
error TS2304: Cannot find name 'process'
Я попытался объявить новый "процесс" var в верхней части файла, но это переопределяет собственную переменную и больше не содержит аргументов...
Я хотел бы сохранить весь свой код в TypeScript, только компилируя JavaScript во время сборки. Каков наилучший способ решения этой проблемы?
Ответы
Ответ 1
Обновление: сентябрь 2016 года
Вам нужно убедиться, что существуют определения типов для Node. Способ сделать это зависит от используемой версии TypeScript.
TypeScript 1
Используйте Typings для установки определений.
typings install --save --global env~node
Обязательно включите typings/index.d.ts
в свой tsconfig.json
файл. Либо включите его в массив "files"
:
"files": ["typings/index.d.ts"]
Или убедитесь, что он опущен из массива "exclude"
.
TypeScript 2
В TypeScript 2 определения могут быть установлены через npm в области @types
.
npm install --save-dev @types/node
Оригинальный ответ: февраль 2016
Вы должны убедиться, что доступны соответствующие определения типов. Для этого используйте диспетчер пакетов Typings. Установите определения для Node следующим образом:
typings install --save --ambient node
Теперь вы можете убедиться, что определения доступны для компилятора. Предпочтительным способом является настроить файл tsconfig следующим образом:
{
"exclude": [
"typings/browser.d.ts",
"typings/browser",
"node_modules"
]
}
Или, альтернативно:
{
"files": [
"typings/main.d.ts"
]
}
Если вы не используете файл tsconfig, вы можете использовать ссылку в верхней части основного файла записи, например:
/// <reference path="path/to/typings/main.d.ts" />
Ответ 2
Этот вопрос находится на вершине результатов Google, когда вы ищете "Не можете найти процесс имени", поэтому я добавлю свои 2 цента к не слишком-не связанной проблеме здесь.
Если вам нужно избавиться от ошибки при использовании if(process.env.NODE_ENV === "production")
, чтобы разбить какой-либо код в процессе производства с помощью webpack, просто добавьте следующее объявление перед строкой:
declare var process: {
env: {
NODE_ENV: string
}
};
Ответ 3
TypeScript 2 - Пользователи Windows
Поскольку этот вопрос стоит на вершине Google, "ts2304 не может найти процесс имени" "Я хочу добавить некоторую помощь для пользователей Windows. Я пытался использовать переменные окружения из файла конфигурации и застрял в этой ошибке.
TSError: невозможно компилировать TypeScript.
Не удается найти имя 'process'- (2304)
Наконец я добавил это в свой tsconfig.json:
{
"compilerOptions": {
"typeRoots": [
"./node_modules/@types"
]
}
}
Это было с tsconfig.json и node_modules на том же уровне каталогов, но по какой-то причине компилятор просто не видел его. Странно, что эта ошибка произошла только для переменных process.env, так как остальная часть моего кода не вызывала проблем с компиляцией.