Migrate tsconfig to Node16 module/moduleResolution

VS Code surfaced the TS deprecation:
  'moduleResolution=node10' is deprecated and won't work in TS 7.0.

Fix: switch the root tsconfig.json from
  module: CommonJS, moduleResolution: node
to
  module: Node16, moduleResolution: Node16

TypeScript 7 only supports node16/nodenext/bundler. node16 matches the
runtime semantics we already use (Node ≥ 16, CommonJS output via the
absence of "type": "module" in package.json), so the emit is unchanged.

Side effect of Node16 resolution: relative imports must carry the .js
extension. Added .js to every relative import across src/* (17 sites,
8 files). Bare module specifiers (express, electron, node:fs, ...) are
unaffected.

Verified:
- tsc -p tsconfig.server.json — 0 errors
- tsc -p tsconfig.installer.json — 0 errors
- node dist/server/app.js boots; /op login → 302, /op/list → 200
This commit is contained in:
2026-05-12 13:41:58 +09:00
parent 7316477e23
commit 635c22c7ad
9 changed files with 19 additions and 19 deletions

View File

@@ -2,9 +2,9 @@ import express from 'express'
import session from 'express-session'
import path from 'node:path'
import fsp from 'node:fs/promises'
import { manifestRootPath, manifestDirPath, fileDirPath, viewsDirPath, publicDirPath } from '../shared/paths'
import { indexRouter } from './routes/index'
import { opRouter } from './routes/op'
import { manifestRootPath, manifestDirPath, fileDirPath, viewsDirPath, publicDirPath } from '../shared/paths.js'
import { indexRouter } from './routes/index.js'
import { opRouter } from './routes/op.js'
const PORT = Number(process.env.PORT ?? 3000)
// 터미널에서 Ctrl+클릭으로 바로 열 수 있도록 기본값은 127.0.0.1.

View File

@@ -1,5 +1,5 @@
import { Router } from 'express'
import { listPackKeys, loadPackDefinition, readManifest } from '../../shared/store'
import { listPackKeys, loadPackDefinition, readManifest } from '../../shared/store.js'
export const indexRouter = Router()

View File

@@ -11,11 +11,11 @@ import {
renamePack,
sanitizePackKey,
savePackList
} from '../../shared/store'
import { fetchReleaseVersions } from '../../shared/mojang'
import { fetchPlaylistEntries, fetchVideoMeta, YtDlpUnavailableError } from '../youtube'
import { requireAuth } from '../middleware/auth'
import type { PackDefinition, PackList } from '../../shared/types'
} from '../../shared/store.js'
import { fetchReleaseVersions } from '../../shared/mojang.js'
import { fetchPlaylistEntries, fetchVideoMeta, YtDlpUnavailableError } from '../youtube.js'
import { requireAuth } from '../middleware/auth.js'
import type { PackDefinition, PackList } from '../../shared/types.js'
export const opRouter = Router()

View File

@@ -3,7 +3,7 @@ import { promises as fs, createWriteStream, constants as fsConst } from 'node:fs
import path from 'node:path'
import https from 'node:https'
import http from 'node:http'
import { getMcCustomDir } from '../shared/paths'
import { getMcCustomDir } from '../shared/paths.js'
export interface YtPlaylistEntry {
id: string