apple/pkl · error · PackageLoadError
cannotResolveDependencyNoProject
cannotResolveDependencyNoProject
Error message
cannotResolveDependencyNoProject
What it means
Sentinel error in EvaluatorImpl.normalizeModuleSource: a dependency notation URI like `@foo/bar.pkl` cannot be resolved because no project context is available (projectFileUri is null). Dependency shorthand imports only work when the evaluator was given a project whose dependencies map notation URIs to resolved absolute package URIs.
Solutions
- Set a project on the evaluator (setProject/applyFromProject) so `@` dependency imports can be resolved.
- Use the fully resolved absolute URI of the module instead of dependency notation.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pkl-core/src/main/java/org/pkl/core/EvaluatorImpl.java:451 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of apple/pkl@f3efcbfc9b (2026-09-08).
Data as JSON: /api/errors/54832034a8704a45.
Report an issue: GitHub.
Appendix: source
Thrown at pkl-core/src/main/java/org/pkl/core/EvaluatorImpl.java:451
handleTimeout(timeoutTask);
return evalResult;
}
/** Resolve dependency notation URIs (e.g. `@foo/bar.pkl`) to its resolved absolute URI. */
private ModuleSource normalizeModuleSource(ModuleSource moduleSource) {
if (moduleSource.getContents() != null
|| moduleSource.getUri().isAbsolute()
|| !moduleSource.getUri().getPath().startsWith("@")) {
return moduleSource;
}
try {
if (projectFileUri != null) {
var moduleKey = moduleResolver.resolve(projectFileUri);
var uri = IoUtils.resolve(securityManager, moduleKey, moduleSource.getUri());
return ModuleSource.uri(uri);
} else {
throw new PackageLoadError("cannotResolveDependencyNoProject");
}
} catch (URISyntaxException e) {
// impossible condition
throw PklBugException.unreachableCode();
} catch (IOException e) {
throw new VmExceptionBuilder()
.evalError("ioErrorLoadingModule", moduleSource.getUri())
.build();
} catch (ExternalReaderProcessException | SecurityManagerException | PackageLoadError e) {
throw new VmExceptionBuilder().withCause(e).build();
}
}
private <T> T doEvaluate(ModuleSource moduleSource, Function<VmTyped, T> doEvaluate) {
return doEvaluate(
() -> {
var moduleKey = moduleResolver.resolve(normalizeModuleSource(moduleSource));
var module = VmLanguage.get(null).loadModule(moduleKey);View on GitHub (pinned to f3efcbfc9b)