下面是 TypeScript + ESModule 版本的最小示例,和你项目更接近。
// 1) process
console.log("pid:", process.pid);
console.log("node version:", process.version);
console.log("argv:", process.argv.slice(2));
console.log("env NODE_ENV:", process.env.NODE_ENV);
// 2) Buffer
const buf = Buffer.from("hello", "utf8");
console.log(buf);
console.log(buf.toString("utf8"));
// 3) EventEmitter
import { EventEmitter } from "node:events";
const bus = new EventEmitter();
bus.on("ready", (msg: string) => console.log("event:", msg));
bus.emit("ready", "server started");
// 4) Stream + fs
import { createReadStream } from "node:fs";
const rs = createReadStream("./package.json", { encoding: "utf8" });
rs.on("data", (chunk) => console.log("chunk len:", chunk.length));
rs.on("end", () => console.log("read done"));
// 5) fs promises
import { writeFile, readFile } from "node:fs/promises";
await writeFile("./tmp.txt", "Node.js fs demo\n", "utf8");
const text = await readFile("./tmp.txt", "utf8");
console.log(text);
// 6) http server
import { createServer } from "node:http";
const server = createServer((req, res) => {
res.writeHead(200, { "Content-Type": "text/plain; charset=utf-8" });
res.end("Hello Node.js");
});
server.listen(3000, () => {
console.log("http://localhost:3000");
});
还有一个 ESM 常用替代:
__dirname / __filename 在 ESM 里这样写:import { fileURLToPath } from "node:url";
import { dirname } from "node:path";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
console.log(__filename);
console.log(__dirname);
漫思
