node.js - Hvordan løse "Kunne ikke finne en deklarasjonsfil for modul 'request-context'."?
Jeg jobber med tre filer for øyeblikket, som er index.js, index.main.js og app.js. Jeg bruker request-context for å hente en variabel fra index.main.js og sende den til index.js.
I app.js (en fil jeg opprettet i server-mappen min) har jeg følgende kode
//full code in app.js
const contextService = require("request-context");
const app = express();
app.use(contextService.middleware("request"));
Jeg har forsøkt å kjøre disse følgende kommandoene
npm install --save typescript @types/node @types/react @types/react-dom @types/jest
npm install -D @types/request-context
og prøvde også å bruke før import
// @ts-ignore
Verken til nytte.
Når jeg sjekker min app.js, legger jeg merke til tre prikker på ordet "require" som viser:
Kunne ikke finne en deklarasjonsfil for modulen 'request-context'. '/home/servertest/Desktop/folder/folder1/src/component_NodeJS/server/node_modules/request-context/lib/index.js' har implisitt typen 'any'. Prøv npm install @types/request-context hvis den finnes, eller legg til en ny deklarasjonsfil (.d.ts) som inneholder declare module 'request-context';ts(7016)
I index.main.js har jeg følgende
async function listFilesInDepth()
{
const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const bucketName = 'probizmy';
const [files] = await storage.bucket(bucketName).getFiles();
const contextService = require("request-context");
console.log('List Of Files Available:');
files.forEach(file =>
{
targetFiles = file.name;
console.log(`-----`+file.name);
});
contextService.set("request:targetFileKey", targetFiles);
return targetFiles;
}
og i index.js har jeg følgende kode
const contextService = require("request-context");
const targetFiles = contextService.get("request:targetFileKey");
console.log(targetFiles) //output shows undefined
Jeg mistenker at forespørselskontekst-feilen er grunnen til at jeg får undefined som output. Det jeg forventer er at verdien av targetFiles skal vises i konsollloggen.
Håper å få litt innsikt i dette. All hjelp vil bli svært takknemlig mottatt! Tusen takk :)
Redigert :
Som forespurt har jeg inkludert package.json
{
"name": "server",
"version": "0.1.81",
"description": "Server NodeJS For Internel Process",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"@google-cloud/storage": "^2.4.2",
"@google-cloud/vision": "^0.25.0",
"@types/jest": "^24.0.15",
"@types/node": "^12.0.12",
"@types/react": "^16.8.23",
"@types/react-dom": "^16.8.4",
"alphabet-generator": "^1.0.1",
"body-parser": "^1.18.3",
"cheerio": "^1.0.0-rc.2",
"cors": "^2.8.5",
"express": "^4.16.4",
"format": "^0.2.2",
"grpc": "^1.19.0",
"multer": "^1.4.1",
"natural": "^0.6.3",
"path": "^0.12.7",
"request": "^2.88.0",
"request-context": "^2.0.0",
"require-all": "^3.0.0",
"require-dir": "^1.2.0",
"string-similarity": "^3.0.0",
"typescript": "^3.5.2"
},
"devDependencies": {
"babel-plugin-root-import": "^6.2.0"
}
}
Svar #1
Jeg har hatt dette problemet før, og det er et problem med hvordan du erklærer typene dine. Det finnes noen måter å løse dette på, som jeg vil inkludere nedenfor med flere lenker for informasjon, inkludert en lenke til TypeScript-erklæringsdokumentasjonen og flere andre ressurser på StackOverflow. Hvis du inkluderer din package.json, kan det hjelpe med å bestemme hva du spesifikt fortsatt trenger å gjøre. Du må sannsynligvis legge til en types-mappe/fil med følgende kodelinjer
"typeRoots": [
"./node_modules/@types",
"./types"
] /* List of folders to include type definitions from. */
Og deretter lage en andre fil av formen *.d.ts for å liste modulene du trenger som gir feil. Så noe som
declare module 'request-context';
Problemet kan også være i din package.js-fil. Du må kanskje erklære hvor dine typinger er, slik som dette
// package.json
{
"typings": "dist/src/*.d.ts"
}
Ulike ressurser
https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html
Finner ikke en deklarasjonsfil for modulen 'module-name'. '/path/to/module-name.js' har implisitt typen 'any'
Typescript react - Kunne ikke finne en deklarasjonsfil for modulen 'react-materialize'. 'path/to/module-name.js' har implisitt typen any
Finner ikke en deklarasjonsfil for modulen
TypeScript: Finner ikke en deklarasjonsfil for modul i enhetstester, bare
Svar #2
Kanskje det er fordi listFilesInDepth er asynkron og du må håndtere løftet eller bruke async await på den metoden.
Blir metoden listFilesInDepth kalt før context.get utføres?
