Instalé el complemento siguiendo el comando en serverless 2.53.1.
npm install --save-dev serverless-s3-syncDespués de instalar, importé el complemento como este en serverless.yml
plugins: - serverless-plugin-common-excludes - serverless-plugin-include-dependencies - serverless-python-requirements - serverless-s3-syncPero (implementación sin servidor) está dando el siguiente error. También se adjunta captura de pantalla del error. (Este error solo ocurre cuando importo este complemento de serverless-s3-sync en el archivo serverless.yml, otros complementos funcionan bien).
ERROR DE DETALLES:
TypeError: no se puede leer la propiedad 'defaultEncoding' de undefined en _write (node:internal/streams/writable:291:24) en WriteStream.Writable.write (node:internal/streams/writable:334:10) en NodejsStreamOutputAdapter.ondata (C :\serverless_v2\node_modules\readable-stream\lib_stream_readable.js:619:20) en NodejsStreamOutputAdapter.emit (nodo:eventos:394:28)
Aquí hay un error completo:
Recibí este mensaje de error dos veces de Serverless Framework. El mensaje de error no es descriptivo de la causa raíz. La forma en que pude resolverlo fue:
serverless plugin install -n serverless-s3-syncAhora podría implementar el proyecto nuevamente. Pero el mensaje de error es engañoso y debe considerarse un error en sí mismo, ya que el mensaje de error es una fuente de dolorosa confusión.
Después de mucho investigar, aislé la causa de tener dos versiones diferentes de graceful-fs en las subdependencias del nodo resuelto.
En mi caso, estoy usando el complemento serverless-python-requirements , no serverless-s3-sync , pero el error es el mismo. Ambos complementos enumeran graceful-fs como una dependencia.
Puede ver en la yarn list que hay dos versiones diferentes de graceful-fs instaladas:
% yarn list ├─ fs-extra@9.1.0 │ ├─ at-least-node@^1.0.0 │ ├─ graceful-fs@^4.2.0 │ ├─ jsonfile@^6.0.1 │ └─ universalify@^2.0.0 … ├─ graceful-fs@4.2.2 ← version used by fs-extra, required by jsonfile … ├─ jsonfile@6.1.0 │ ├─ graceful-fs@^4.1.6 │ ├─ graceful-fs@4.1.15 ← version used by jsonfile │ └─ universalify@^2.0.0 …Parece que los objetos de flujo creados por una versión de esta biblioteca no son consumibles por la otra versión.
Con yarn resolví esto colocando graceful-fs en la última versión agregando esto a mi archivo package.json :
"resolutions": { "**/graceful-fs": "4.2.8" } Para npm , debería ser posible lograr lo mismo usando npm-force-solutions , pero parece que la sintaxis es ligeramente diferente (no he probado esto):
"resolutions": { "graceful-fs": "4.2.8" } Eliminar el archivo de bloqueo y la carpeta node_modules y reinstalarlos podría resolver el problema, pero dado el dolor que esto ha causado, estaba más feliz de anclar la versión en package.json .