fix(server): make package.json require resilient to dist mode
Three upstream Docmost services (export, version, telemetry) require
'../../../package.json' relative to source. In nest start dist mode the
relative path resolves one level too short and crashes at boot.
Wrap each require in a try/catch fallback that walks up one extra level,
defaulting to { version: 'dev' } if neither resolves. Boot now succeeds
both in dev (tsx) and in dist (node dist/main).
Also adds docker-compose.dev.yml for an isolated dev stack on ports
5433/6380, kept in repo for future dev sessions.
Patch 018.
This commit is contained in:
parent
44bfd5d616
commit
3c6478826a
4 changed files with 46 additions and 3 deletions
|
|
@ -30,7 +30,11 @@ import { Node } from '@tiptap/pm/model';
|
||||||
import { EditorState } from '@tiptap/pm/state';
|
import { EditorState } from '@tiptap/pm/state';
|
||||||
import slugify from '@sindresorhus/slugify';
|
import slugify from '@sindresorhus/slugify';
|
||||||
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
||||||
const packageJson = require('../../../package.json');
|
const packageJson: { version: string } = (() => {
|
||||||
|
try { return require('../../../package.json'); } catch { /* dist mode */ }
|
||||||
|
try { return require('../../../../package.json'); } catch { /* deeper */ }
|
||||||
|
return { version: 'dev' };
|
||||||
|
})();
|
||||||
import { EnvironmentService } from '../environment/environment.service';
|
import { EnvironmentService } from '../environment/environment.service';
|
||||||
import { DomainService } from '../environment/domain.service';
|
import { DomainService } from '../environment/domain.service';
|
||||||
import {
|
import {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
||||||
const packageJson = require('./../../../package.json');
|
const packageJson: { version: string } = (() => {
|
||||||
|
try { return require('./../../../package.json'); } catch { /* dist */ }
|
||||||
|
try { return require('./../../../../package.json'); } catch { /* deeper */ }
|
||||||
|
return { version: 'dev' };
|
||||||
|
})();
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class VersionService {
|
export class VersionService {
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,11 @@ import { KyselyDB } from '@docmost/db/types/kysely.types';
|
||||||
import { createHmac } from 'node:crypto';
|
import { createHmac } from 'node:crypto';
|
||||||
import { WorkspaceRepo } from '@docmost/db/repos/workspace/workspace.repo';
|
import { WorkspaceRepo } from '@docmost/db/repos/workspace/workspace.repo';
|
||||||
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
||||||
const packageJson = require('./../../../package.json');
|
const packageJson: { version: string } = (() => {
|
||||||
|
try { return require('./../../../package.json'); } catch { /* dist */ }
|
||||||
|
try { return require('./../../../../package.json'); } catch { /* deeper */ }
|
||||||
|
return { version: 'dev' };
|
||||||
|
})();
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class TelemetryService {
|
export class TelemetryService {
|
||||||
|
|
|
||||||
31
docker-compose.dev.yml
Normal file
31
docker-compose.dev.yml
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
services:
|
||||||
|
db-dev:
|
||||||
|
image: postgres:16-alpine
|
||||||
|
container_name: docadenice-dev-db
|
||||||
|
environment:
|
||||||
|
POSTGRES_DB: docadenice_dev
|
||||||
|
POSTGRES_USER: docadenice
|
||||||
|
POSTGRES_PASSWORD: dev_password_local_only
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:5433:5432"
|
||||||
|
volumes:
|
||||||
|
- dev_db_data:/var/lib/postgresql/data
|
||||||
|
restart: unless-stopped
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U docadenice -d docadenice_dev"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 3s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
|
redis-dev:
|
||||||
|
image: redis:7-alpine
|
||||||
|
container_name: docadenice-dev-redis
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:6380:6379"
|
||||||
|
volumes:
|
||||||
|
- dev_redis_data:/data
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
dev_db_data:
|
||||||
|
dev_redis_data:
|
||||||
Loading…
Add table
Reference in a new issue