Open shamansir opened 3 years ago
Oh, I see, could be related to #159
But the output from PureScript IDE is different:
Running build command: /opt/local/bin/spago build --purs-args --json-errors [object Object] /dev/null
[Info - 1:38:57 PM] Invalid argument `[object Object]'
So, seems, >
symbol is replaced with the [object Object]
somehow.
The problem is that spago
's output is full of Compiling package ...
lines even with --json-errors
flag on, when used without > /dev/null
or, previously, --quiet
, so the build also fails.
The build command is not run under a shell, you should remove the > /dev/null
.
The spago output should just be fine as it is, so long as JSON errors are printed to stderr - junk lines should be ignored. There is some change incoming with purescript 0.14 around printing JSON errors to stdout, but unless this is involved in current spago behaviour I guess that's not relevant
Did that (removing the redirect) help? It should be that simply including the "junk" in the output and relying on the extension to sort it out is fine - certainly I'm happily building with spago in that case.
Without > /dev/null
It fails with a dialog box (or passes, when should not (there are errors in the code), but still shows the dialog box):
[Info - 23:07:47] Running build command: /opt/local/bin/spago build --purs-args --json-errors
[Info - 23:07:51] Compiling Noodle.Render.Html.DebugBox
Compiling Noodle.Render.Component.Patch.Layout
Compiling Noodle.API.Action.Apply
[Error - 23:07:51] Couldn't parse build output: Unexpected token in JSON at position 8192
Built with 0/0 issues for file: "/Users/shamansir/Workspace/noodle/src/Noodle/Render/Component/Patch/Layout.purs", all diagnostic files: []
That 8192 is suspicious, I assume something is going wrong parsing large JSON output.
I've fixed some issues in the code, but the position doesn't change:
[Info - 08:27:33] Resolved build command (1st is used):
[Info - 08:27:33] /opt/local/bin/spago: 0.19.0
[Info - 08:27:33] Running build command: /opt/local/bin/spago build --purs-args --json-errors
[Info - 08:27:40] Compiling Noodle.API.Action.Sequence
Compiling Noodle.Render.Component.Patch.Layout
Compiling Noodle.Render.Html.DebugBox
Compiling Noodle.Render.Renderer
Compiling Noodle.Test.Spec.Flow.Base
Compiling Noodle.Test.Spec.Actions
Compiling Noodle.Test.Spec.Structure
Compiling Noodle.Render.String
Compiling Noodle.Test.Util.Trace
Compiling Noodle.Render.Terminal
Compiling Noodle.Render.Html.VDom
Compiling Noodle.Test.Spec.Flow.Subscriptions
Compiling Noodle.Test.Spec.Flow.Subpatches
Compiling Noodle.Test.Spec.Flow.Network
Compiling Noodle.Test.Spec.Flow.Inlets
Compiling Noodle.Test.Spec.Flow.Nodes
Compiling Noodle.Test.Spec.Flow.Links
Compiling Noodle.Test.Spec.Flow
[Error - 08:27:40] Couldn't parse build output: Unexpected token in JSON at position 8192
The output of /opt/local/bin/spago build --purs-args --json-errors > ./tmp.errors 2>&1
is here (notice I intentionally didn't format it and it's just a very long line of JSON, so that formatting wouldn't change positions): https://gist.github.com/shamansir/c77bcbb2d202afd4733f4290c628a0f3
However I noticed that spago
has been updated to 0.19.1
, the version I use is 0.19.0
.
In the JSON string, it seems to be nothing suspicious at the position 8192 (see the cursor), but a bit earlier in the code there are operators imports, could that be that some operator has unsupported symbol idk?
Thanks for the JSON upload, I'll try to repro later. As I say 8192 is a suspicious number (being a power of 2) so likely not actually a character in the JSON. This extension (rather the LS) did at one time have an issue with larger error reports, but I'm surprised this is cropping up as I did think that was fixed
This is a node thing where it doesn't always flush or receive stdout before the process closes. I've experienced this when combining spago and psa with the ide server. I'm not totally sure where the culprit lies as I never have this problem when using only psa and vscode, or only spago and vscode.
Seems outputting errors have changed in PureScript 14.0, could be related and I'll try it later:
Compiler errors and warnings arising from your code are now printed to stdout rather than stderr, and progress messages such as "Compiling Data.Array" are now printed to stderr rather than stdout. Warnings and errors arising from incorrect use of the CLI, such as specifying input files which don't exist or specifying globs which don't match any files, are still printed to stderr (as they were before). This change is useful when using the
--json-errors
flag, since you can now pipe JSON errors into other programs without having to perform awkward gymnastics such as2>&1
.
I saw this once and still can't reproduce it.
After a side-track where I was typing up a comment noting the json was truncated after my editor truncated it...
I can build just fine with those json errors as saved here, so I can only agree with nate that it seems likely there is some truncation with the way these things are composed.
Version: 0.23.3
spago
version: 0.19.0purs
version: 0.13.8Could be
spago
issue, but may be you have a suggestion on what to change in my build command.I used this command as build command:
And every next build I get the error: Problem running build: didn't find JSON output. Sometimes (rarely) it works, and the errors are fine, but usually not.
Before, there was a
--quiet
flag, but now it's gone fromspago
in favour of> dev/null
.Could be that
spago
(purs
?) still adds the[error] Failed to build.
to the JSON output with errors.