javascript - קריאת ארגומנטים משורת הפקודה - שגיאה TS2304: לא ניתן למצוא את השם 'process'
משתמש בגרסת TypeScript 1.7.5.
אני כותב תוכנית NodeJS שבה אני רוצה לקרוא ארגומנטים משורת הפקודה שהמשתמש מעביר (2 מספרים שלמים). הכל עובד טוב ב-JavaScript רגיל, אבל נוצרת בעיה ב-TypeScript.
מתי
process.argvמשמש בקובץ TypeScript, כאשר הוא מקומפל ל-JavaScript המהדר נותן שגיאה כי הוא לא מזהה את המשתנה "process".
error TS2304: Cannot find name 'process'ניסיתי להכריז על משתנה חדש בשם "process" בראש הקובץ, אבל זה מחליף את המשתנה המקורי והוא כבר לא מכיל את הפרמטרים...
אני רוצה לשמור את כל הקוד שלי כולו ב-TypeScript, ולהרכיב רק ל-JavaScript בזמן הבנייה. מה הפתרון הטוב ביותר לבעיה הזו?
תשובה #1
עדכון: ספטמבר 2016
אתה צריך לוודא שההגדרות של סוג עבור Node זמינות. הדרך לעשות זאת תלויה באיזו גרסה של TypeScript אתה משתמש.
טייפסקריפט 1
השתמש ב-Typings כדי להתקין את ההגדרות.
typings install --save --global env~node
ודא לכלול את typings/index.d.ts בקובץ tsconfig.json שלך. או לכלול אותו במערך "files":
"files": ["typings/index.d.ts"]
או ודא שהוא מושמט ממערך "exclude".
טייפסקריפט 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
שאלה זו מופיעה בראש תוצאות הגוגל כאשר מחפשים "Cannot find name 'process'", אז אני אוסיף את שתי המטבעות שלי לנושא שלא רחוק מדי מכאן.
אם אתה צריך להיפטר מהשגיאה בעת שימוש ב-if(process.env.NODE_ENV === "production") כדי להסיר קוד מסוים בייצור עם webpack, פשוט הוסף את ההכרזה הבאה לפני השורה:
declare var process: {
env: {
NODE_ENV: string
}
};
