Fix PM2 startup and harden server entry detection.
Use a bash launch script for production and pathToFileURL-based main-module checks so sourcing.simosen.cn listens reliably under PM2. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -3,8 +3,8 @@ module.exports = {
|
||||
{
|
||||
name: "product-sourcing",
|
||||
cwd: "/www/wwwroot/sourcing.simosen.cn/app",
|
||||
script: "src/server.js",
|
||||
interpreter: "node",
|
||||
script: "deploy/start.sh",
|
||||
interpreter: "/bin/bash",
|
||||
env: {
|
||||
NODE_ENV: "production",
|
||||
PORT: "9477",
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")/.."
|
||||
exec /root/.nvm/versions/node/v20.20.2/bin/node src/server.js
|
||||
+11
-2
@@ -2,7 +2,7 @@ import { createReadStream } from "node:fs";
|
||||
import { readdir, readFile, stat } from "node:fs/promises";
|
||||
import { createServer as createHttpServer } from "node:http";
|
||||
import { extname, join, normalize, resolve } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { fileURLToPath, pathToFileURL } from "node:url";
|
||||
|
||||
import { buildDashboard, buildStyleGroups, toCsv } from "./core.js";
|
||||
import { JsonStore } from "./store.js";
|
||||
@@ -867,7 +867,16 @@ function crc32(buffer) {
|
||||
return (crc ^ 0xffffffff) >>> 0;
|
||||
}
|
||||
|
||||
if (process.argv[1] && resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
|
||||
function isMainModule() {
|
||||
if (!process.argv[1]) return false;
|
||||
try {
|
||||
return import.meta.url === pathToFileURL(resolve(process.argv[1])).href;
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (isMainModule()) {
|
||||
try {
|
||||
await readFile(join(DEFAULT_PUBLIC_DIR, "index.html"));
|
||||
} catch {
|
||||
|
||||
Reference in New Issue
Block a user