2015-07-23 3 views
2

Я пытаюсь преобразовать и развернуть одно из наших приложений node.js в функцию лямбда и возникли некоторые проблемы с зависимостями node_modules - заявив, что он не может найти определенные модули. Я начал с создания package.json, npm установил зависимости локально, затем скопировал папку модулей узлов до лямбда.ошибки node_module с AWS лямбдой, какова лучшая практика для зависимостей?

Например, у меня есть проект, требующий секвестрации и осуждения, и возникают ошибки, говорящие о том, что он не может найти моментный модуль в качестве субзависимости. Я вижу, что этот момент включен в корень моих node_modules, но он не был включен в подпапку в модуле sequelize.

Однако этот проект работает нормально локально. В чем разница в лямбда и какая оптимальная практика для развертывания с ним несколько длинного списка узлов - просто копия папки node_modules? На некоторых других более простых проектах, которые у меня есть, небольшое количество node_modules можно скопировать без проблем.

 
{ 
    "errorMessage": "Cannot find module 'moment'", 
    "errorType": "Error", 
    "stackTrace": [ 
    "Function.Module._resolveFilename (module.js:338:15)", 
    "Function.Module._load (module.js:280:25)", 
    "Module.require (module.js:364:17)", 
    "require (module.js:380:17)", 
    "VERSION (/var/task/node_modules/sequelize/node_modules/moment-timezone/moment-timezone.js:14:28)", 
    "Object. (/var/task/node_modules/sequelize/node_modules/moment-timezone/moment-timezone.js:18:2)", 
    "Module._compile (module.js:456:26)", 
    "Object.Module._extensions..js (module.js:474:10)", 
    "Module.load (module.js:356:32)", 
    "Function.Module._load (module.js:312:12)" 
    ] 
} 

ответ

0

Это звучит для меня, как вопрос, вызванных различными версиями npm. Вы используете ту же версию nodejs локально, что и Lambda (то есть v0.10.36)?

В зависимости от версии npm вы используете для установки модулей локально, содержимое node_modules справочника изложены несколько иначе (в основном для того, чтобы предотвращать дублирование вещей), и это может быть, почему ваши зависимости не может найти их зависимости в Лямбде.

После недолгого копания, это звучит, как чистая установка (то есть. rm вашего node_modules каталога и запустить npm install) может очистить вещи для вас. Причина в том, что кажется, что npm не устанавливает субзависимости, если они уже присутствуют на верхнем уровне (то есть вы установили moment до sequelize и т. Д.).

Смежные вопросы