diff --git a/src/Schema/Directives/BaseDirective.php b/src/Schema/Directives/BaseDirective.php
index <HASH>..<HASH> 100644
--- a/src/Schema/Directives/BaseDirective.php
+++ b/src/Schema/Directives/BaseDirective.php
@@ -108,12 +108,12 @@ abstract class BaseDirective implements Directive
 
         // Fallback to using information from the schema definition as the model name
         if (! $model) {
-            /** @var \Nuwave\Lighthouse\Schema\AST\DocumentAST $documentAST */
-            $documentAST = app(ASTBuilder::class)->documentAST();
-
             if ($this->definitionNode instanceof FieldDefinitionNode) {
                 $returnTypeName = ASTHelper::getUnderlyingTypeName($this->definitionNode);
 
+                /** @var \Nuwave\Lighthouse\Schema\AST\DocumentAST $documentAST */
+                $documentAST = app(ASTBuilder::class)->documentAST();
+
                 if (! isset($documentAST->types[$returnTypeName])) {
                     throw new DefinitionException(
                         "Type '$returnTypeName' on '{$this->definitionNode->name->value}' can not be found in the schema.'"
Load $documentAST as lazily as possible when calling BaseDirective::getModelClass()