goja icon indicating copy to clipboard operation
goja copied to clipboard

require.SourceLoader taking script path as well?

Open SolarLune opened this issue 11 months ago • 1 comments

Hello~

When I create a script registry, I'm using a loading function through require.WithLoader() to manually load the script and return the []byte, which works fine:

g.ScriptRequireRegistry = require.NewRegistry(require.WithLoader(func(path string) ([]byte, error) {
	correctPath := filepath.Join("assets/scripts/", path)
	res, err := fs.ReadFile(assetFileSystem, correctPath)
	if err != nil {
		log.Println("load required module:", correctPath, "failed:", err)
		return nil, err
	}
	log.Println("load required module:", correctPath, "succeeded")
	return res, nil
}))

However, if the module is requested through a relative path from the script, which is in a subdirectory (e.g. something like const Actions = require("../libraries/Actions.mjs");), then I need to know where the requesting script is loading it from.

Would it be possible to make require.SourceLoader take the requesting script's path as well as the module path?

SolarLune avatar Jan 29 '25 01:01 SolarLune