simoncck commited on
Commit
fce18a0
·
verified ·
1 Parent(s): 836a468

Create server.js

Browse files
Files changed (1) hide show
  1. server.js +69 -0
server.js ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // server.js – write-access tester
2
+ import express from 'express';
3
+ import fs from 'fs';
4
+ import fsp from 'fs/promises';
5
+ import path from 'path';
6
+
7
+ const PORT = process.env.PORT || 7860;
8
+ const DIR = '/data'; // Space-persistent volume
9
+ const FILE = path.join(DIR, 'test.txt');
10
+
11
+ const app = express();
12
+ app.use(express.json());
13
+
14
+ /* POST /write -> attempts three save methods */
15
+ app.post('/write', async (_req, res) => {
16
+ const report = {};
17
+
18
+ // ensure /data exists
19
+ try {
20
+ fs.mkdirSync(DIR, { recursive: true });
21
+ report.mkdir = 'ok';
22
+ } catch (e) {
23
+ report.mkdir = e.message;
24
+ }
25
+
26
+ /* ---- Method A: sync write ---- */
27
+ try {
28
+ fs.writeFileSync(FILE, 'sync write\n', { flag: 'a' });
29
+ report.sync = 'ok';
30
+ } catch (e) {
31
+ report.sync = e.message;
32
+ }
33
+
34
+ /* ---- Method B: fs.promises ---- */
35
+ try {
36
+ await fsp.writeFile(FILE, 'promises write\n', { flag: 'a' });
37
+ report.promise = 'ok';
38
+ } catch (e) {
39
+ report.promise = e.message;
40
+ }
41
+
42
+ /* ---- Method C: stream ---- */
43
+ try {
44
+ await new Promise((resolve, reject) => {
45
+ const stream = fs.createWriteStream(FILE, { flags: 'a' });
46
+ stream.on('error', reject);
47
+ stream.end('stream write\n', resolve);
48
+ });
49
+ report.stream = 'ok';
50
+ } catch (e) {
51
+ report.stream = e.message;
52
+ }
53
+
54
+ res.json(report);
55
+ });
56
+
57
+ /* GET /read -> returns file contents or error */
58
+ app.get('/read', (req, res) => {
59
+ try {
60
+ const txt = fs.readFileSync(FILE, 'utf-8');
61
+ res.type('text/plain').send(txt);
62
+ } catch (e) {
63
+ res.status(500).send(e.message);
64
+ }
65
+ });
66
+
67
+ app.listen(PORT, '0.0.0.0', () =>
68
+ console.log(`📝 Write-test server listening on ${PORT} (DIR=${DIR})`)
69
+ );