NodeJS невозможно разрешить некоторые узлы модулей - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть проект NodeJS со следующей структурой каталогов, где файл package.json находится в моем каталоге root, а мои исходные и тестовые файлы NodeJS находятся в двух разных дочерних каталогах.

enter image description here

Примечание: значительное количество пакетов было удалено, чтобы уменьшить размер скриншота - обычно это не все пакеты в папке node_modules / .

Вы можете увидеть зависимости на скриншоте, но это мой список зависимостей package.json:

{
  "name": "hello_world",
  "main": "src/lambda.js",
  "license": "MIT",
  "dependencies": {
    "aws-sdk": "^2.659.0",
    "jsonschema": "^1.2.6",
    "uuid": "^7.0.3"
  },
  "scripts": {
    "test": "mocha tests/unit/"
  },
  "devDependencies": {
    "chai": "^4.2.0",
    "mocha": "^6.1.4"
  }
}

Код узла используется в AWS Lambda, и я принес AWS SDK в проект. Это требуется в первых нескольких строках кода:

let AWS = require('aws-sdk');
let Configuration = require('./collectionConfiguration');
let Response = require('./response');
let App = require('./app');
//let uuid = require('uuid');

exports.handler = async (event, context) => {

    // Create the dependencies that the app requires
    let config = new Configuration();
    let sns = new AWS.SNS();

    try {
        if (event.body == null || event.body == "") {
            return new Response(422, null, "Request body is missing required fields.", null);
        }

        let projectRequest = JSON.parse(event.body);
        let app = new App();
        //return await app.run(projectRequest);        

    } catch (err) {
        console.log(err);
        return new Response(500, null, err, null);
    }

    return new Response(401, null, null, null);
};

Я могу запустить код локально и вызвать Lambda без каких-либо проблем. Если я раскомментирую let uuid = require('uuid');, то получаю ошибку времени выполнения:

Ошибка: не удается найти модуль 'uuid'

Я не уверен, почему aws -sdk может быть обнаружен, и все же модуль uuid не может быть. Я попробовал другой модуль, модуль jsonschema, и я получаю ту же ошибку.

Насколько я понимаю, Node будет работать вверх по течению в файловой системе в поисках каталога node_modules. Он должен быть в состоянии найти его, так как это всего лишь один родительский каталог по сравнению с исходным кодом.

Если я переместу папку node_modules в папку src/, ошибка исчезнет, ​​и я смогу использовать модули. Я не понимаю, как работает node_modules / discovery? Как я могу заставить приложение обнаруживать модули дальше по иерархии каталогов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...