grafana/k6 · error
the module %q was not previously resolved during initializat
Error message
the module %q was not previously resolved during initialization (__VU==0)
What it means
initializeGoModule was asked to instantiate a Go (builtin/extension) module after the resolver was locked — i.e. outside the initialization phase (__VU==0). The generic sentinel notPreviouslyResolvedModule fires when the module name was never pre-resolved and cached during init, typically because the import happens in handleSetup or another late lifecycle hook.
Source
Thrown at js/modules/resolution.go:75
compiler: c,
reverse: make(map[any]*url.URL),
base: base,
usage: u,
logger: logger,
}
}
func (mr *ModuleResolver) resolveSpecifier(basePWD *url.URL, arg string) (*url.URL, error) {
specifier, err := loader.Resolve(basePWD, arg)
if err != nil {
return nil, err
}
return specifier, nil
}
func (mr *ModuleResolver) initializeGoModule(name string) (sobek.ModuleRecord, error) {
if mr.locked {
return nil, fmt.Errorf(notPreviouslyResolvedModule, name)
}
mod, ok := mr.goModules[name]
if !ok {
mr.unknownModules = append(mr.unknownModules, name)
return &unknownModule{name: name, requested: make(map[string]struct{})}, nil
}
// We would have hit the cache if this isn't the first time, so each distinct
// module is recorded once. An extension is identified by membership in the
// extension registry, not by its k6/x/ name: its resolved registry entry is
// recorded under "extensions" so the report needs no re-resolution, while
// built-in modules stay in the "modules" bucket.
if e, ok := ext.Get(ext.JSExtension)[name]; ok {
if err := mr.usage.Values("extensions", e); err != nil {
mr.logger.WithError(err).Warnf("Error while reporting usage of extension %q", name)
}
} else if err := mr.usage.Strings("modules", name); err != nil {
mr.logger.WithError(err).Warnf("Error while reporting usage of module %q", name)
}View on GitHub (pinned to 01ffac6f24)
Solutions
- Move the import of the Go module to the top of the init context (top-level import statement) so it resolves while __VU==0
- Use require() inside setup only for modules already imported at the top level
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at js/modules/resolution.go:75 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of grafana/k6@01ffac6f24 (2026-08-18).
Data as JSON: /api/errors/5f08fbfdceedd5c7.
Report an issue: GitHub.