web-dev-qa-db-fra.com

Comment résoudre «Impossible de trouver un fichier de déclaration pour le module 'Demande-Contexte'."?

Je travaille sur trois fichiers pour le moment qui sont index.js, index.main.js et app.js. J'utilise la demande-contexte pour saisir une variable d'index.main.js et passez-la à index.js.

Dans App.js (un fichier j'ai créé dans mon dossier serveur) J'ai le code suivant

    //full code in app.js

    const contextService = require("request-context");
    const app = express();

    app.use(contextService.middleware("request"));

J'ai essayé d'exécuter ces commandes suivantes

npm install --save TypeScript @types/node @types/react @types/react-dom @types/jest

npm install -D @types/request-context

et aussi essayé d'utiliser avant l'importation

// @ts-ignore

En vain.

Quand je vérifie mon application.js je remarque trois points sur le mot "exiger" qui montre:

Impossible de trouver un fichier de déclaration pour le module 'demande-contexte'. '/Home/ServertTest/desktop/folder/Folder1/src/component_nodejs/server/node_modules/Request-Context/lib/index.js' a implicitement un type "n'importe quel". Essayer npm install @types/request-context S'il existe ou ajoutez une nouvelle déclaration (.D.TS) contenant declare module 'request-context';ts (7016)

Dans index.main.js j'ai ce qui suit

 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;
    }

et dans index.js j'ai le code suivant

const contextService = require("request-context");
const targetFiles = contextService.get("request:targetFileKey");

console.log(targetFiles) //output shows undefined

Je soupçonne que l'erreur de contexte de demande est la raison pour laquelle je suis indéfini comme la sortie. Mon résultat attendu est que la valeur des champs TargetFiles soit sur le journal de la console.

Dans l'espoir d'avoir une idée de cela. Toute aide serait grandement appréciée! Merci :)

Édité:

Comme demandé, j'ai inclus 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"
  }
}
4
Vaulient

J'ai déjà eu cette question et il y a un problème avec la façon dont vous déclarez vos typages. Il existe quelques façons de résoudre ce problème, je comprendrai ci-dessous avec plus de liens pour des informations avec un lien avec la documentation de déclaration dossée et plusieurs autres ressources StackoverFlow. Si vous incluez votre package.json, cela peut aider à déterminer ce que vous devez toujours faire. Vous devez probablement ajouter dans un dossier/fichier de types avec les lignes de code suivantes

"typeRoots": [
  "./node_modules/@types",
  "./types"
]                       /* List of folders to include type definitions from. */

Puis créer un deuxième fichier du formulaire * .D.TS pour répertorier vos modules nécessaires erreurs. Alors quelque chose comme

declare module 'request-context';

Le problème pourrait également figurer dans votre fichier package.js. Vous devrez peut-être déclarer où sont les dactosions comme si

// package.json
{
  "typings": "dist/src/*.d.ts"
}

Différentes ressources

https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html

Impossible de trouver un fichier de déclaration pour le module "nom du module". '/Path/to/module-name.js' implicitement a un type "n'importe quel" type

TypeScript React - Impossible de trouver un fichier de déclaration pour le module '' réact-matérialiser '.' Path/to/Module-Name.js 'a implicitement un type

Impossible de trouver un fichier de déclaration pour module

Typescript: Impossible de trouver un fichier de déclaration pour le module dans des tests unitaires, uniquement

1
Lucas Hendren

Peut-être que c'est parce que le listFilesInDepth est asynchronous et vous devez gérer la promesse ou utiliser ASYNC attendre sur cette méthode.

La méthode ListFilesIndepth a-t-elle appelé avant de faire le contexte.get?

0
Ion