Подтвердить что ты не робот

TypeScript: прочитать аргументы из командной строки - ошибка TS2304: не удается найти имя 'process'

Использование TypeScript версии 1.7.5.

Я пишу программу nodeJS, в которой я хочу читать аргументы командной строки, переданные пользователем (2 целых числа). Все работает отлично в сыром JavaScript, но проблема возникает с помощью TypeScript.

Когда

process.argv
используется в файле TypeScript, когда он компилируется в JavaScript, ошибки компилятора, потому что он не распознает переменную процесса.
error TS2304: Cannot find name 'process'

Я попытался объявить новый "процесс" var в верхней части файла, но это переопределяет собственную переменную и больше не содержит аргументов...

Я хотел бы сохранить весь свой код в TypeScript, только компилируя JavaScript во время сборки. Каков наилучший способ решения этой проблемы?

4b9b3361

Ответ 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, так как остальная часть моего кода не вызывала проблем с компиляцией.