FIX: import resolution in code editor #1661
Open
+23
−0
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.
After switching to the dev build to be able to use Typescript, I noticed that import resolution fails most of the time. Not always, though. This is what it looks like:
As you can see in the screenshot, it doesn't matter whether or not a file extension is provided. Additionally, I noticed that if an imported file is opened before the 'importee' file, the import resolution does seem to work fine. Unfortunately, I've not come around with why this happens and what the underlying problem is. I believe it's related to the virtual filesystem which Bitburner implements and that monaco doesn't know how to find source files automatically in there.
As a workaround, I opted to implement a callback which loads all imported files into the typescript worker in the background whenever a model changes. The callback does not reload scripts which are already open, so dirty files which are currently open will not be overwritten.
With the fix in place, import resolution and type annotations for imported types/functions now works correctly: