جافاسكريبت - تايب سكريبت: فشل التصحيح. تعبير خاطئ: تم تمرير قيمة غير نصية إلى `ts.resolveTypeReferenceDirective`
لدي تطبيق سطر أوامر npm الذي بنيته ليس منذ وقت طويل وكان يعمل بشكل جيد. الآن بعد أن قمت بتحديثه، وبسبب التغيرات في إصدارات TypeScript على مر الوقت، أتلقى خطأ عند محاولة تشغيل هذه الحزمة يقول:
Debug Failure. False expression: Non-string value passed to `ts.resolveTypeReferenceDirective`, likely by a wrapping package working with an outdated `resolveTypeReferenceDirectives` signature. This is probably not a problem in TS itself.
إليك ملف package.json:
{
"name": "initialiseur",
"version": "4.0.4",
"main": "src index.ts",
"author": "@crispengari",
"license": "MIT",
"bin": "src/index.ts",
"description": "THIS IS A BOILER PLATE THAT INITIALIZE A NODE EXPRESS BACKEND FOR TYPESCRIPT AND JAVASCRIPT",
"scripts": {
"watch": "tsc -w",
"start": "ts-node src/index.ts",
"dev": "nodemon dist/index.ts",
"start:fast": "tsnd --respawn src/index.ts"
},
"dependencies": {
"@types/inquirer": "^7.3.3",
"@types/node": "^17.0.42",
"@types/npm": "^7.19.0",
"chalk": "^4.1.2",
"cors": "^2.8.5",
"cross-fetch": "^3.1.5",
"dotenv": "^10.0.0",
"inquirer": "^8.1.2",
"node-fetch": "^3.2.6",
"octokit": "^1.7.2",
"ts-node": "^10.8.1",
"typescript": "^4.6.5"
},
"devDependencies": {
"@types/node-fetch": "^2.6.1",
"nodemon": "^2.0.12",
"ts-node-dev": "^2.0.0"
},
"bugs": {
"url": "https://github.com/CrispenGari/initialiseur/issues"
},
"homepage": "https://github.com/CrispenGari/initialiseur#readme",
"keywords": [
"node.ts",
"node.js",
"typescript",
"ts",
"nodejs-backend",
"javascript",
"js",
"express",
"backend"
]
}
عندما أقوم باختباره محليًا عن طريق التشغيل:
npm start
or
yarn start
كل شيء يعمل بشكل جيد، لكن بعد نشره على npm لتشغيله أختبر الأمر التالي:
npx initialiseur
ثم أحصل على خطأ من سطر الأوامر. الخطأ الكامل كما يلي:
C:\Users\crisp\AppData\Roaming\npm\node_modules\initialiseur\node_modules\typescript\lib\typescript.js:42536
ts.Debug.assert(typeof typeReferenceDirectiveName === "string", "Non-string value passed to `ts.resolveTypeReferenceDirective`, likely by a wrapping package working with an outdated `resolveTypeReferenceDirectives` signature. This is probably not a problem in TS itself.");
^
Error: Debug Failure. False expression: Non-string value passed to `ts.resolveTypeReferenceDirective`, likely by a wrapping package working with an outdated `resolveTypeReferenceDirectives` signature. This is probably not a problem in TS itself.
at Object.resolveTypeReferenceDirective (C:\Users\crisp\AppData\Roaming\npm\node_modules\initialiseur\node_modules\typescript\lib\typescript.js:42536:18)
at C:\Users\crisp\AppData\Roaming\npm\node_modules\ts-node\src\resolver-functions.ts:131:51
at Array.map (<anonymous>)
at Object.resolveTypeReferenceDirectives (C:\Users\crisp\AppData\Roaming\npm\node_modules\ts-node\src\resolver-functions.ts:130:31)
at actualResolveTypeReferenceDirectiveNamesWorker (C:\Users\crisp\AppData\Roaming\npm\node_modules\initialiseur\node_modules\typescript\lib\typescript.js:116673:163)
at resolveTypeReferenceDirectiveNamesWorker (C:\Users\crisp\AppData\Roaming\npm\node_modules\initialiseur\node_modules\typescript\lib\typescript.js:116973:26)
at processTypeReferenceDirectives (C:\Users\crisp\AppData\Roaming\npm\node_modules\initialiseur\node_modules\typescript\lib\typescript.js:118455:31)
at findSourceFileWorker (C:\Users\crisp\AppData\Roaming\npm\node_modules\initialiseur\node_modules\typescript\lib\typescript.js:118340:21)
at findSourceFile (C:\Users\crisp\AppData\Roaming\npm\node_modules\initialiseur\node_modules\typescript\lib\typescript.js:118195:26)
at processImportedModules (C:\Users\crisp\AppData\Roaming\npm\node_modules\initialiseur\node_modules\typescript\lib\typescript.js:118601:25)
من الخطأ أعلاه يمكنني أن أقول أن المشكلة قد تكون ناتجة عن typescript، لقد حاولت تغيير إصدار TypeScript ولكن لا يزال لا يعمل. في ملفي src/index.ts يبدو كما يلي:
#!/usr/bin/env ts-node
import path from "path";
import inquirer from "inquirer";
import { writeFile, readFile } from "fs/promises";
....
الإجابة رقم 1
تشغيل npm install -g ts-node@latest أصلح المشكلة بالنسبة لي. كنت بحاجة إلى تحديث إصدار ts-node المثبت على مستوى النظام.
الإجابة رقم 2
لتكرار الإجابات السابقة لمستخدمي Yarn:
yarn add -D ts-node@latest حلّ لي المشكلة. هذه هي إصداراتي الآن:
"ts-node": "^10.9.1",
"typescript": "^4.7.4"
لا ينبغي للجابة الأعلى أن توصي على الأرجح بالتخفيض.
تعديل
إذا استمررت في مواجهة مشاكل، حاول حذف مجلد node_modules وإعادة التثبيت عن طريق تشغيل yarn.
إذا لم ينجح ذلك بعد، قد تحتاج إلى إضافة هذه الإصدارات إلى حقل resolutions في package.json، ثم تشغيل yarn install --force.
{
"resolutions": {
"ts-node": "^10.9.1",
"typescript": "^4.7.4"
}
}
مع ذلك، أعتبر هذا إجراءً مؤقتًا بعض الشيء، ولن أوصي بترك القرارات طوال الوقت.
الإجابة رقم 3
الحصول على نفس الشيء كما قبل يومين.
إعادة ts-node إلى الإصدار 10.6.0 يصلحه بالنسبة لي.
الإجابة رقم 4
يحدث هذا في TypeScript 4.7. لقد خفضت إصدار TypeScript إلى 4.6.4، واختفى الخطأ
الإجابة رقم 5
قم بتحديث TypeScript كما اقترح @alex-totolici:
npm i typescript@latestوقم بتحديث ts-node:
npm i ts-node@latest
