Я пытаюсь упаковать приложение монорепозитория для развертывания без сервера. В монорепозитории используются рабочие области пряжи и lerna. Чтобы создать пакеты для развертывания, мы используем webpack. Структура проекта выглядит так:
Вот структура проекта внутри монорепозитория:
общий
- общий_проект_1
-- package.json
- общий_проект_2
-- package.json
услуги
- сервис_1
-- package.json
-- serverless.yml
-- webpack.config.js
- сервис_2
-- package.json
-- serverless.yml
-- webpack.config.js
пакет.json
lerna.json
commom/shared_project_1/package.json:
"private": true,
"dependencies": {
"bcrypt": "^3.0.4"
}
услуги/service_1/package.json:
"private": true,
"scripts": {
"build": "serverless webpack --stage development"
}
services/service_1/serverless.yml:
service:
name: service-1
provider:
name: aws
runtime: nodejs8.10
custom:
webpack:
includeModules:
forceExclude:
- aws-sdk
packager: yarn
functions:
<functions here>
package:
exclude:
- coverage/**
plugins:
- serverless-webpack
пакет.json:
"private": true,
"workspaces": {
"packages": [
"services/*",
"common/*"
]
},
"scripts": {
"build": "export NODE_ENV=development && lerna run --concurrency 1 build"
}
lerna.json:
{
"packages": [
"services/*"
],
"version": "1.0.0",
"npmClient": "yarn",
"useWorkspaces": true
}
Ошибка, которую я получаю, когда Serverless достигает «Serverless: Bundling with Webpack...»:
WARNING in /Users/me/Projects/monorepo/node_modules/bcrypt/bcrypt.js 6:15-36 Critical dependency: the request of a dependency is an expression @ /Users/me/Projects/monorepo/common/shared_project_1/src/tables/users.js @ /Users/me/Projects/monorepo/common/shared_project_1/src/connection.js @ ./src/dashboard-snapshots.js
WARNING in /Users//Projects/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib/pre-binding.js 20:22-48 Critical dependency: the request of a dependency is an expression @ /Users/me/Projects/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib/node-pre-gyp.js @ /Users/me/Projects/monorepo/node_modules/bcrypt/bcrypt.js @ /Users/me/Projects/monorepo/common/shared_project_1/src/tables/users.js @ /Users/me/Projects/monorepo/common/shared_project_1/src/connection.js @ ./src/dashboard-snapshots.js
WARNING in /Users/me/Projects/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib/util/versioning.js 17:20-67 Critical dependency: the request of a dependency is an expression @ /Users/me/Projects/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib/pre-binding.js @ /Users/me/Projects/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib/node-pre-gyp.js @ /Users/me/Projects/monorepo/node_modules/bcrypt/bcrypt.js @ /Users/me/Projects/monorepo/common/shared_project_1/src/tables/users.js @ /Users/me/Projects/monorepo/common/shared_project_1/src/connection.js @ ./src/dashboard-snapshots.js
WARNING in /Users/me/Projects/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib/util/compile.js Module not found: Error: Can't resolve 'npm' in '/Users/me/Projects/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib/util' @ /Users/me/Projects/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib/util/compile.js @ /Users/me/Projects/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib sync ^./.*$ @ /Users/me/Projects/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib/node-pre-gyp.js @ /Users/me/Projects/monorepo/node_modules/bcrypt/bcrypt.js @ /Users/me/Projects/monorepo/coinfo Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Я попытался добавить bcrypt в конфигурацию рабочей области nohoist на основе предложений из других вопросов, но это просто меняет путь в сообщении об ошибке. Я глобально установил node-pre-gyp и node-gyp; не имеет значения. Очевидно, я не понимаю, как все эти части сочетаются друг с другом. Какие изменения мне нужно внести, чтобы рабочая область правильно связала зависимость bcrypt для развертывания в AWS?





Этот вопрос не является дубликатом, возможно, @Corin мог бы задать вопрос, нацеленный на bcrypt и связывающий его с веб-пакетом, но они никоим образом не являются дубликатами !!!