Как решить «Не удалось найти файл объявления для модуля« request-context ».»? - PullRequest
1 голос
/ 08 июля 2019

В данный момент я работаю над тремя файлами: index.js, index.main.js и app.js.Я использую контекст запроса, чтобы получить переменную из index.main.js и передать ее в index.js.

В app.js (файл, который я создал в своей папке на сервере) у меня есть следующий код

    //full code in app.js

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

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

Я пытался выполнить следующие команды

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

npm install -D @types/request-context

, а также пытался использовать перед импортом

// @ts-ignore

Безрезультатно.

Когда я проверяю свой app.js, я замечаю три точки на слове «require», которое показывает:

Не удалось найти файл объявления для модуля 'request-context'.«/home/servertest/Desktop/folder/folder1/src/component_NodeJS/server/node_modules/request-context/lib/index.js» неявно имеет тип «любой».Попробуйте npm install @types/request-context, если он существует, или добавьте новый файл декларации (.d.ts), содержащий declare module 'request-context'; ts (7016)

В index.main.js у меня есть следующее

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

и в index.js у меня есть следующий код

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

console.log(targetFiles) //output shows undefined

Я подозреваю, что ошибка запроса и контекста является причиной того, что я получаю неопределенный вывод.Мой ожидаемый результат заключается в том, что значение targetFiles будет выводиться в журнале консоли.

В надежде получить представление об этом.Любая помощь будет принята с благодарностью!Спасибо:)

Отредактировано:

По запросу я включил 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"
  }
}

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

У меня была эта проблема раньше, и есть проблема с тем, как вы объявляете свои наборы. Есть несколько способов решения этой проблемы, которые я приведу ниже, с дополнительными ссылками на информацию со ссылкой на документацию с описанием машинописного текста и несколькими другими ресурсами StackOverflow. Если вы включите свой package.json, это может помочь определить, что конкретно вам еще нужно сделать. Скорее всего, вам нужно добавить в папку типов / файл со следующими строками кода

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

А затем создайте второй файл в форме * .d.ts, чтобы получить список необходимых модулей с ошибками. Так что-то вроде

declare module 'request-context';

Проблема также может быть в вашем файле package.js. Возможно, вам придется объявить, где ваши печатные тексты похожи на

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

Различные ресурсы

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

Не удалось найти файл объявления для модуля 'module-name'. '/path/to/module-name.js' неявно имеет тип 'any'

Машинопись реагирует - Не удалось найти файл объявления для модуля «реакция-материализация». 'path / to / module-name.js' неявно имеет любой тип

Не удалось найти файл объявления для модуля

TypeScript: не удалось найти файл объявления для модуля в модульных тестах, только

0 голосов
/ 08 июля 2019

Возможно, это потому, что listFilesInDepth равен asynchronous, и вы должны обработать обещание или использовать асинхронное ожидание для этого метода.

Вызывается ли метод listFilesInDepth перед выполнением context.get?

...