You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When running serverless offline, the offline server starts but when a file is changed, serverless-esbuild runs into an infinite loop and keeps compiling until the process is killed.
Investigation
After some investigation, I found that chikidar is initialized with
Reading the code, (1)and (2) should actually be respectively .esbuild and .build since they are the default value from serverless-esbuild (link).
The issue is that getCachedOptions ran for the first time before this.outputWorkFolder and this.outputBuildFolder are defined. Hence the cache is populated with null instead.
Fix
This fix, makes this.outputWorkFolder and this.outputBuildFolder initialized with the context value instead of the one from getCachedOptions.
I'm not sure if this.outputWorkFolder and this.outputBuildFolder are supposed to come from somewhere outside this plugin (are they initialised by Serverless itself?), but certainly in my case they aren't defined.
I'm not sure if this.outputWorkFolder and this.outputBuildFolder are supposed to come from somewhere outside this plugin (are they initialised by Serverless itself?), but certainly in my case they aren't defined.
ah yep you are right. Pre-#337 they were initialised in the constructor. Let me think about this and I'll put something up to fix it
This branch has not been deployed
No deployments
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue:
With the following settings in
serverless.yml:When running
serverless offline, the offline server starts but when a file is changed,serverless-esbuildruns into an infinite loop and keeps compiling until the process is killed.Investigation
After some investigation, I found that chikidar is initialized with
{ "options": { "ignored": [ null, // (1) "dist", "node_modules", null, // (2) "node_modules/serverless-esbuild" ], "awaitWriteFinish": true, "ignoreInitial": true }, "defaultPatterns": [ "./**/*.(js|ts)" ] }Reading the code,
(1)and(2)should actually be respectively.esbuildand.buildsince they are the default value fromserverless-esbuild(link).The issue is that
getCachedOptionsran for the first time beforethis.outputWorkFolderandthis.outputBuildFolderare defined. Hence the cache is populated withnullinstead.Fix
This fix, makes
this.outputWorkFolderandthis.outputBuildFolderinitialized with the context value instead of the one fromgetCachedOptions.