Skip to content

Code Generation Troubleshooting

Troubleshooting guide for apx gen, apx sync, and related code generation issues.

Tool Resolution

buf: executable file not found

exec: "buf": executable file not found in $PATH

Cause: The Buf CLI is not installed or not in PATH.

Fix:

# Preferred — uses pinned version from apx.lock
apx fetch

# Or install globally
brew install bufbuild/buf/buf

protoc-gen-go: plugin not found

Error: protoc-gen-go: plugin not found

Cause: Go protobuf plugins are not installed.

Fix:

apx fetch    # downloads all pinned tools

# Or install manually
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest


Generation Errors

no schema files found

Error: no schema files found for format "proto" in path ...

Cause: The specified path doesn't contain schema files for the given format.

Fix: - Check that module_roots in apx.yaml points to the correct directory - Verify schema files exist (e.g. .proto files for protobuf) - If auto-detection fails, specify the format explicitly: apx gen go --format proto

buf generate fails with import errors

proto/payments/ledger/v1/ledger.proto:5:1: import "google/protobuf/timestamp.proto": not found

Cause: Proto imports can't be resolved. Buf needs to know where to find dependencies.

Fix: - Ensure buf.yaml has the correct deps section:

deps:
  - buf.build/googleapis/googleapis
  - buf.build/grpc/grpc
- Run buf dep update to fetch dependencies - Verify buf.lock is committed

output directory is not clean

Warning: output directory internal/gen/go/ contains files not managed by apx

Fix: Use --clean to remove stale files before generating:

apx gen go --clean


Overlay & Sync Issues

go.work not updated after generation

Cause: apx sync wasn't run after code generation.

Fix:

apx gen go && apx sync

Always run apx sync after generating Go code to update go.work with the new overlay directories.

Stale generated files after schema changes

Cause: Old generated files remain from a previous schema structure.

Fix:

apx gen go --clean    # removes old output, regenerates fresh
apx sync --clean      # removes stale go.work entries

go.work changes not reflected

If go build doesn't see the new modules:

# Verify go.work has the right entries
cat go.work

# Re-sync
apx sync

# Force Go to re-read go.work
go mod tidy

Language-Specific Issues

Go: module path mismatch

go: inconsistent module path: go.mod says "github.com/acme-corp/apis/proto/payments/ledger"
   but expected "github.com/acme-corp/other-path"

Cause: The go.mod in the generated overlay has a different module path than expected.

Fix: - Check go_package in your .proto files matches the canonical import path - Regenerate: apx gen go --clean - Verify with: apx inspect identity proto/payments/ledger/v1

Go: cannot find module providing package

cannot find module providing package github.com/acme-corp/apis/proto/payments/ledger/v1

Fix: - Ensure go.work includes the generated overlay directory - Run apx sync to update go.work - Verify the overlay directory exists: ls internal/gen/go/proto/payments/ledger/

Python: import failures

ModuleNotFoundError: No module named 'proto.payments.ledger.v1'

Fix: - Add the generated output directory to PYTHONPATH:

export PYTHONPATH="$PWD/internal/gen/python:$PYTHONPATH"
- Verify __init__.py files exist in each package directory - Regenerate if needed: apx gen python --clean


Manifest Issues

--manifest file not found

Error: manifest file "gen-manifest.yaml" not found

Cause: The manifest file specified with --manifest doesn't exist.

Fix: - Check the file path and name - Create a manifest file if needed (see apx gen --help for format)


Debugging Tips

# Verbose output shows each tool invocation
apx gen go --verbose

# Dry run to see what would be generated
apx sync --dry-run

# Check which tools APX resolved
ls -la .apx-tools/

# Verify schema detection
apx lint --verbose

See Also