Cannot read properties of null (reading 'length') on the media files
docker compose logs -f
then I initiate a scan on /media/movies
frames | [Nest] 98 - 04/21/2025, 4:17:23 AM LOG [RouterExplorer] Mapped {/setup, GET} route +0ms
frames | [Nest] 98 - 04/21/2025, 4:17:23 AM LOG [RouterExplorer] Mapped {/*route, GET} route +1ms
frames | [Nest] 98 - 04/21/2025, 4:17:23 AM LOG [RouterExplorer] Mapped {/, GET} route +0ms
frames | [Nest] 98 - 04/21/2025, 4:17:23 AM LOG [StorageWatcher] Setting watcher to monitor 2 folders
frames | [Nest] 98 - 04/21/2025, 4:17:23 AM LOG [PubSubService] Subscribed to channel: PUB_SUB_CHANNEL_NAME
frames | [Nest] 98 - 04/21/2025, 4:17:23 AM LOG [PubSubService] Config PubSub service initialized successfully
frames | [Nest] 98 - 04/21/2025, 4:17:23 AM LOG [NestApplication] Nest application successfully started +27ms
frames | [Nest] 98 - 04/21/2025, 4:17:23 AM LOG [ScannerProcessor] Processing scan all library job: 6
frames | [Nest] 98 - 04/21/2025, 4:17:52 AM ERROR [FramesInterceptor] Cannot read properties of null (reading 'length')
frames | [Nest] 98 - 04/21/2025, 4:17:52 AM ERROR [FramesInterceptor] Cannot read properties of null (reading 'length')
frames | [Nest] 98 - 04/21/2025, 4:17:52 AM ERROR [FramesInterceptor] Cannot read properties of null (reading 'length')
frames | [Nest] 98 - 04/21/2025, 4:17:55 AM ERROR [FramesInterceptor] Cannot read properties of null (reading 'length')
frames | [Nest] 98 - 04/21/2025, 4:18:03 AM LOG [ScannerProcessor] Processing scan movie library job: 7
frames | [Nest] 98 - 04/21/2025, 4:18:03 AM LOG [ScannerProcessor] Finished processing movie job: 7 of library Media
my docker-compose.yml, and yes the password is password since it's just to test
version: '3'
services:
frames:
container_name: frames
image: elevenam/frames:dev
ports:
- "3000:3000"
volumes:
- /root/media:/media
# - ./app:/usr/src/app
environment:
- DATABASE_URL=postgres://frames:password@frame_postgres:5432/frames
- DIRECT_DATABASE_URL=postgres://frames:password@frame_postgres:5432/frames
- REDIS_HOST=frame_redis
- REDIS_PORT=6379
- REDIS_TTL=86400
- REDIS_DB=0
- JWT_SECRET=password
depends_on:
- frame_postgres
- frame_redis
frame_postgres:
container_name: frame_postgres
image: pgvector/pgvector:pg14
environment:
- POSTGRES_USER=frames
- POSTGRES_PASSWORD=password
- POSTGRES_DB=frames
volumes:
- ./postgres_data:/var/lib/postgresql/data
frame_redis:
container_name: frame_redis
image: redis:alpine
volumes:
- ./redis_data:/data
It's running on it's own LXC inside Proxmox, if that matters. Accessing via https://frames.domain.com handled by Nginx Proxy Manager. Not sure why 4 same errors came out when I just clicked on a movie once.
the folder /root/media has changed owner to 1001:1001 via chown -R 1001:1001 since root owner didn't work as well, I figured since if I run docker exec -it frames bash and type in id it returns nestuser(1001).
Hey do you mind pulling a new image and launching it so we can get a full stack trace please
Just did a docker compose pull && docker compose up -d && docker compose logs -f. Then refreshed my already opened tab.
log:
frames | [Nest] 95 - 04/22/2025, 5:12:54 AM LOG [RouterExplorer] Mapped {/s=:name, GET} route +0ms
frames | [Nest] 95 - 04/22/2025, 5:12:54 AM LOG [RouterExplorer] Mapped {/p=:name, GET} route +0ms
frames | [Nest] 95 - 04/22/2025, 5:12:54 AM LOG [RouterExplorer] Mapped {/c=:name, GET} route +1ms
frames | [Nest] 95 - 04/22/2025, 5:12:54 AM LOG [RouterExplorer] Mapped {/r=:roomId, GET} route +0ms
frames | [Nest] 95 - 04/22/2025, 5:12:54 AM LOG [RouterExplorer] Mapped {/f=:cypher, GET} route +0ms
frames | [Nest] 95 - 04/22/2025, 5:12:54 AM LOG [RouterExplorer] Mapped {/w=:playbackId, GET} route +1ms
frames | [Nest] 95 - 04/22/2025, 5:12:54 AM LOG [RouterExplorer] Mapped {/col=:name, GET} route +0ms
frames | [Nest] 95 - 04/22/2025, 5:12:54 AM LOG [RouterExplorer] Mapped {/pl=:playlistId, GET} route +0ms
frames | [Nest] 95 - 04/22/2025, 5:12:54 AM LOG [RouterExplorer] Mapped {/setup, GET} route +1ms
frames | [Nest] 95 - 04/22/2025, 5:12:54 AM LOG [RouterExplorer] Mapped {/*route, GET} route +0ms
frames | [Nest] 95 - 04/22/2025, 5:12:54 AM LOG [RouterExplorer] Mapped {/, GET} route +0ms
frames | [Nest] 95 - 04/22/2025, 5:12:55 AM LOG [StorageWatcher] Setting watcher to monitor 2 folders
frames | [Nest] 95 - 04/22/2025, 5:12:55 AM LOG [PubSubService] Subscribed to channel: PUB_SUB_CHANNEL_NAME
frames | [Nest] 95 - 04/22/2025, 5:12:55 AM LOG [PubSubService] Config PubSub service initialized successfully
frames | [Nest] 95 - 04/22/2025, 5:12:55 AM LOG [NestApplication] Nest application successfully started +29ms
frames | [Nest] 95 - 04/22/2025, 5:12:55 AM LOG [ScannerProcessor] Processing scan all library job: 8
^[[Zframes | [Nest] 95 - 04/22/2025, 5:13:05 AM ERROR [AuthorizationHttpGuard] User is not authenticated
frames | [Nest] 95 - 04/22/2025, 5:13:05 AM ERROR [AuthorizationHttpGuard] Error: User is not authenticated
frames | at createBasicError (/usr/src/app/node_modules/@eleven-am/fp/mapper.js:37:31)
frames | at /usr/src/app/node_modules/@eleven-am/authorizer/authorization/authorization.service.js:58:62
frames | at /usr/src/app/node_modules/fp-ts/lib/Either.js:624:56
frames | at async mapTaskEither (/usr/src/app/node_modules/@eleven-am/authorizer/authorization/authorization.constants.js:76:20)
frames | at async GuardsConsumer.tryActivate (/usr/src/app/node_modules/@nestjs/core/guards/guards-consumer.js:16:17)
frames | at async canActivateFn (/usr/src/app/node_modules/@nestjs/core/router/router-execution-context.js:135:33)
frames | at async /usr/src/app/node_modules/@nestjs/core/router/router-execution-context.js:42:31
frames | at async /usr/src/app/node_modules/@nestjs/core/router/router-proxy.js:9:17
frames | [Nest] 95 - 04/22/2025, 5:13:10 AM ERROR [AuthorizationHttpGuard] User is not authenticated
frames | [Nest] 95 - 04/22/2025, 5:13:10 AM ERROR [AuthorizationHttpGuard] Error: User is not authenticated
frames | at createBasicError (/usr/src/app/node_modules/@eleven-am/fp/mapper.js:37:31)
frames | at /usr/src/app/node_modules/@eleven-am/authorizer/authorization/authorization.service.js:58:62
frames | at /usr/src/app/node_modules/fp-ts/lib/Either.js:624:56
frames | at async mapTaskEither (/usr/src/app/node_modules/@eleven-am/authorizer/authorization/authorization.constants.js:76:20)
frames | at async GuardsConsumer.tryActivate (/usr/src/app/node_modules/@nestjs/core/guards/guards-consumer.js:16:17)
frames | at async canActivateFn (/usr/src/app/node_modules/@nestjs/core/router/router-execution-context.js:135:33)
frames | at async /usr/src/app/node_modules/@nestjs/core/router/router-execution-context.js:42:31
frames | at async /usr/src/app/node_modules/@nestjs/core/router/router-proxy.js:9:17
Chrome is showing only this
{
"message": "User is not authenticated",
"error": "Unauthorized",
"statusCode": 401
}
So I use edge for the first time accessing this domain, this appears.
So I went and login...
I'll do a fresh new one in a few hours.
- I removed the containers and the folders (docker compose down --rmi local && rm -rf postgres_data redis_data)
- I did a docker compose up -d --force-recreate
- Did the whole dance with tmdb openai etc (if there's a way to input these into the environment variables in docker-compose.yml that would be wonderful btw)
- docker compose logs -f and it shows user is not authenticated
frames | [Nest] 101 - 04/22/2025, 9:24:05 AM LOG [RouterExplorer] Mapped {/pl=:playlistId, GET} route +0ms
frames | [Nest] 101 - 04/22/2025, 9:24:05 AM LOG [RouterExplorer] Mapped {/setup, GET} route +0ms
frames | [Nest] 101 - 04/22/2025, 9:24:05 AM LOG [RouterExplorer] Mapped {/*route, GET} route +1ms
frames | [Nest] 101 - 04/22/2025, 9:24:05 AM LOG [RouterExplorer] Mapped {/, GET} route +0ms
frames | [Nest] 101 - 04/22/2025, 9:24:05 AM LOG [StorageWatcher] Setting watcher to monitor 0 folders
frames | [Nest] 101 - 04/22/2025, 9:24:05 AM LOG [PubSubService] Subscribed to channel: PUB_SUB_CHANNEL_NAME
frames | [Nest] 101 - 04/22/2025, 9:24:05 AM LOG [PubSubService] Config PubSub service initialized successfully
frames | [Nest] 101 - 04/22/2025, 9:24:05 AM LOG [NestApplication] Nest application successfully started +17ms
frames | [Nest] 101 - 04/22/2025, 9:24:20 AM ERROR [SetupGuard] /setup
frames | [Nest] 101 - 04/22/2025, 9:24:20 AM ERROR [SetupGuard] Error: /setup
frames | at createBasicError (/usr/src/app/node_modules/@eleven-am/fp/mapper.js:37:31)
frames | at run (/usr/src/app/dist/setup/setup.guard.js:34:88)
frames | at /usr/src/app/node_modules/@eleven-am/fp/taskEither.js:250:143
frames | at /usr/src/app/node_modules/fp-ts/lib/EitherT.js:99:97
frames | at /usr/src/app/node_modules/fp-ts/lib/Task.js:134:41
frames | at async mapTaskEither (/usr/src/app/node_modules/@eleven-am/authorizer/authorization/authorization.constants.js:76:20)
frames | at async GuardsConsumer.tryActivate (/usr/src/app/node_modules/@nestjs/core/guards/guards-consumer.js:16:17)
frames | at async canActivateFn (/usr/src/app/node_modules/@nestjs/core/router/router-execution-context.js:135:33)
frames | at async /usr/src/app/node_modules/@nestjs/core/router/router-execution-context.js:42:31
frames | at async /usr/src/app/node_modules/@nestjs/core/router/router-proxy.js:9:17
frames | [Nest] 101 - 04/22/2025, 9:24:24 AM DEBUG [PubSubService] Received event: TMDB_KEY_UPDATED_EVENT
frames | [Nest] 101 - 04/22/2025, 9:24:24 AM DEBUG [PubSubService] Object(1) {
frames | eventName: 'TMDB_KEY_UPDATED_EVENT'
frames | }
frames | [Nest] 101 - 04/22/2025, 9:24:34 AM DEBUG [PubSubService] Received event: FAN_ART_KEY_UPDATED_EVENT
frames | [Nest] 101 - 04/22/2025, 9:24:34 AM DEBUG [PubSubService] Object(1) {
frames | eventName: 'FAN_ART_KEY_UPDATED_EVENT'
frames | }
frames | [Nest] 101 - 04/22/2025, 9:24:43 AM DEBUG [PubSubService] Received event: OPEN_AI_KEY_UPDATED_EVENT
frames | [Nest] 101 - 04/22/2025, 9:24:43 AM DEBUG [PubSubService] Object(1) {
frames | eventName: 'OPEN_AI_KEY_UPDATED_EVENT'
frames | }
frames | [Nest] 101 - 04/22/2025, 9:26:10 AM ERROR [AuthorizationHttpGuard] User is not authenticated
frames | [Nest] 101 - 04/22/2025, 9:26:10 AM ERROR [AuthorizationHttpGuard] Error: User is not authenticated
frames | at createBasicError (/usr/src/app/node_modules/@eleven-am/fp/mapper.js:37:31)
frames | at /usr/src/app/node_modules/@eleven-am/authorizer/authorization/authorization.service.js:58:62
frames | at /usr/src/app/node_modules/fp-ts/lib/Either.js:624:56
frames | at async mapTaskEither (/usr/src/app/node_modules/@eleven-am/authorizer/authorization/authorization.constants.js:76:20)
frames | at async GuardsConsumer.tryActivate (/usr/src/app/node_modules/@nestjs/core/guards/guards-consumer.js:16:17)
frames | at async canActivateFn (/usr/src/app/node_modules/@nestjs/core/router/router-execution-context.js:135:33)
frames | at async /usr/src/app/node_modules/@nestjs/core/router/router-execution-context.js:42:31
frames | at async /usr/src/app/node_modules/@nestjs/core/router/router-proxy.js:9:17
frames | [Nest] 101 - 04/22/2025, 9:26:38 AM ERROR [AuthorizationHttpGuard] User is not authenticated
frames | [Nest] 101 - 04/22/2025, 9:26:38 AM ERROR [AuthorizationHttpGuard] Error: User is not authenticated
frames | at createBasicError (/usr/src/app/node_modules/@eleven-am/fp/mapper.js:37:31)
frames | at /usr/src/app/node_modules/@eleven-am/authorizer/authorization/authorization.service.js:58:62
frames | at /usr/src/app/node_modules/fp-ts/lib/Either.js:624:56
frames | at async mapTaskEither (/usr/src/app/node_modules/@eleven-am/authorizer/authorization/authorization.constants.js:76:20)
frames | at async GuardsConsumer.tryActivate (/usr/src/app/node_modules/@nestjs/core/guards/guards-consumer.js:16:17)
frames | at async canActivateFn (/usr/src/app/node_modules/@nestjs/core/router/router-execution-context.js:135:33)
frames | at async /usr/src/app/node_modules/@nestjs/core/router/router-execution-context.js:42:31
frames | at async /usr/src/app/node_modules/@nestjs/core/router/router-proxy.js:9:17
I'm going to try without redis now, and removing all redis entries in docker-compose.yml. docker compose up -d && docker compose logs -f
frames | Starting application
frames | (node:102) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
frames | (Use `node --trace-deprecation ...` to show where the warning was created)
frames | [Nest] 102 - 04/22/2025, 9:32:15 AM LOG [NestFactory] Starting Nest application...
frames | [Nest] 102 - 04/22/2025, 9:32:15 AM LOG [InstanceLoader] SocketModule dependencies initialized +89ms
frames | [Nest] 102 - 04/22/2025, 9:32:15 AM LOG [InstanceLoader] StorageModule dependencies initialized +0ms
frames | [Nest] 102 - 04/22/2025, 9:32:15 AM LOG [InstanceLoader] HttpModule dependencies initialized +4ms
frames | [Nest] 102 - 04/22/2025, 9:32:15 AM LOG [InstanceLoader] ConfigHostModule dependencies initialized +0ms
frames | [Nest] 102 - 04/22/2025, 9:32:15 AM LOG [InstanceLoader] RouterModule dependencies initialized +1ms
frames | [Nest] 102 - 04/22/2025, 9:32:15 AM LOG [InstanceLoader] DiscoveryModule dependencies initialized +0ms
frames | [Nest] 102 - 04/22/2025, 9:32:15 AM LOG [InstanceLoader] DiscoveryModule dependencies initialized +0ms
frames | [Nest] 102 - 04/22/2025, 9:32:15 AM LOG [InstanceLoader] HttpModule dependencies initialized +1ms
frames | [Nest] 102 - 04/22/2025, 9:32:15 AM LOG [InstanceLoader] ConfigModule dependencies initialized +0ms
frames | [Nest] 102 - 04/22/2025, 9:32:15 AM LOG [InstanceLoader] EventEmitterModule dependencies initialized +3ms
frames | [Nest] 102 - 04/22/2025, 9:32:15 AM LOG [InstanceLoader] TerminusModule dependencies initialized +12ms
frames | [Nest] 102 - 04/22/2025, 9:32:15 AM ERROR [ExceptionHandler] TypeError: Configuration key "REDIS_HOST" does not exist
frames | at ConfigService.getOrThrow (/usr/src/app/node_modules/@nestjs/config/dist/config.service.js:132:19)
frames | at InstanceWrapper.useFactory [as metatype] (/usr/src/app/dist/config/redisOptions.js:10:33)
frames | at Injector.instantiateClass (/usr/src/app/node_modules/@nestjs/core/injector/injector.js:376:55)
frames | at callback (/usr/src/app/node_modules/@nestjs/core/injector/injector.js:65:45)
frames | at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
frames | at async Injector.resolveConstructorParams (/usr/src/app/node_modules/@nestjs/core/injector/injector.js:145:24)
frames | at async Injector.loadInstance (/usr/src/app/node_modules/@nestjs/core/injector/injector.js:70:13)
frames | at async Injector.loadProvider (/usr/src/app/node_modules/@nestjs/core/injector/injector.js:98:9)
frames | at async /usr/src/app/node_modules/@nestjs/core/injector/instance-loader.js:56:13
frames | at async Promise.all (index 3)
frames exited with code 1
Okay let's try and respond to all the pain points. yeah you can provide the tmdb, fanart and open ai as env vars. that way you dont need to set them up. session needs redis to function. so might explain the sign in thing but not really. it is still unclear to me why your browser isn't saving the cookie. sent from the server. I would be happy debugging with you live sometime. maybe on a weekend.
Thanks for the reply. Sorry but how would I be able to use the env vars for tmdb etc? Something like this is my docker-compose.yml?
volumes:
- /root/media:/media
# - ./app:/usr/src/app
environment:
- DATABASE_URL=postgres://frames:password@frame_postgres:5432/frames
- DIRECT_DATABASE_URL=postgres://frames:password@frame_postgres:5432/frames
- REDIS_HOST=frame_redis
- REDIS_PORT=6379
- REDIS_TTL=86400
- REDIS_DB=0
- JWT_SECRET=password
- TMDB_API=randomchar
- OPENAI_API=randomchar
- FANARTTV_API=randomchar
depends_on:
- frame_postgres
- frame_redis
can't seem to find the correct variable name anywhere. Thanks again! I don't mind the live debugging though, whenever we both have the same exact amount of free time :-D I'm at GMT +8 btw. I'm only up right now at 4+ AM due to an emergency work.
Please consider reading the my readme the details are on there