node.js - TS2403: הכרזות משתנה עוקבות חייבות להיות בעלות אותו סוג. לאחר התקנת NPM
חיפשתי את stack overflow לגבי הבעיה הזו, אבל עדיין לא ברור לי למה זה קורה/איך לתקן את זה.
רציתי טיפוסי Node בפרויקט Typescript שלי אז הקלדתי את הפקודה הזו:
npm install @types/node --save
שגרם ל:
c:/xyz/node_modules/@types/node/index.d.ts(89,13)
error TS2403: Subsequent variable declarations must have the same type.
Variable 'require' must be of type 'Require', but here has type 'NodeRequire'.
למכונה שלי הייתה גרסת Node 7.0.3 הטיפוסים המותקנים היו עבור גרסה + @types/[email
אם אני מסיר את ההתקנה של הקבצי הטיפוס, הפרויקט שלי מתכנס ללא בעיות.
נראה כאילו תוכן ההקלדות אינו נכון לפי הודעת השגיאה! תיקונו מסובך. יש לך עצות?
הנה שורת הקוד הכושלת ב-index.d.ts
נראה שה-NodeRequire (ממשקים) צריכים להיות מעוקפים לטובת Require.js?
זהו קובץ ה-TSConfig:
{
"compilerOptions": {
"module": "amd",
"moduleResolution": "node",
"target": "es5",
"noImplicitAny": false,
"jsx": "react",
"sourceMap": false,
"baseUrl": ".",
"paths": {
"OfficeFabric/*": [
"node_modules/office-ui-fabric-react/lib-amd/*"
]
}
}
}
ניסיתי את ההצעה של 'Exclude' למטה וזה לא עבד. Github אומר שאם פתרון המודול הוא NODE אז 'exclude' לא יעבוד בכל מקרה.
תשובה #1
בסדר, סוף סוף מצאתי את הגורם השורשי: קובץ index.d.ts של Node התנגח עם קובץ index.d.ts של Require, שניהם הכריזו על משתנה בשם require. הדרך שבה מצאתי את זה הייתה לשנות את require ל-nrequire ואז לחפש בפרויקט את כל המקרים של nrequire. יש הרבה פתרונות,
שנה את שם המשתנה (יוחלף בעת התקנה או עדכון של npm).
ב-TypeScript השתמש באופציה --types כדי להשתמש באחת מהן או באחת השנייה, אבל לא בשתיהן.
- פשוט הסר את הקלדת הצומת.
תשובה #2
נתקלתי בבעיה זו פעמים רבות בפרויקט שלי בעבודה, פתרתי אותה על ידי הסרה של node_modules הקיימות והתקנת גרסה חדשה יותר של node_modules הקיימות.
