Я потратил больше дня на эту проблему. В конце я перепробовал почти все возможные подходы и, наконец, решил проблему, переключившись на Serverless с ClaudiaJS . Для использования всеми я упомяну здесь подходы, которые я попробовал с результатами.
- Использовал ту же среду локального хоста внутри контейнера докера сборки, которая использовалась конвейером GoCD (та же версия узла, та же версия пряжи, Ubuntu 16:04). Но проблема все еще была.
- Удален Docker и настроен конвейер GoCD для запуска непосредственно на сервере сборки (Снова использовалась та же версия узла, та же версия пряжи, Ubuntu 16:04, которую я использовал на своем локальном компьютере). Но снова не было никакой блокировки, и проблема была там без каких-либо изменений.
- Зафиксировал папку node_modules и папку build моего локального компьютера в репозитории git и использовал те же самые node_modules и файлы сборки с конвейером GoCD без выполнения
yarn
и без передачи кода на сервер сборки. Но ничего не изменилось.
Наконец, я переключился на Serverless Framework. В первой попытке я использовал Serverless с babel и без webpack, хотя без сервера рекомендуется использовать webpack. Но снова та же самая проблема произошла, когда лямбда развернута с конвейером. Я изменил конфигурацию, чтобы использовать веб-пакет с сервером. Затем все проблемы были решены, и лямбда была успешно развернута. Это webpack.config.js
, который я использовал в конце.
const path = require('path');
const slsw = require('serverless-webpack');
const nodeExternals = require('webpack-node-externals');
const build = {
entry: slsw.lib.entries,
resolve: {
extensions: ['.js'],
},
target: 'node',
output: {
libraryTarget: 'commonjs',
path: path.join(__dirname, '.webpack'),
filename: '[name].js',
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: [
{
loader: 'babel-loader',
},
],
},
],
},
mode: slsw.lib.webpack.isLocal ? 'development' : 'production',
optimization: {
// Do not minimize the code.
minimize: false,
},
performance: {
// Turn off size warnings for entry points
hints: false,
},
externals: [nodeExternals()],
};
module.exports = build;