90 lines
3.5 KiB
JavaScript
90 lines
3.5 KiB
JavaScript
// scripts/fix-turbopack-external.js
|
|
// Fix: Buat wrapper module untuk hashed external modules yang diperlukan Turbopack
|
|
'use strict';
|
|
const { Client } = require('ssh2');
|
|
|
|
const SSH = { host: '103.185.47.52', port: 2222, username: 'adminbackend', password: 'htEo7x6LsBQiEHHH', readyTimeout: 60000 };
|
|
const PUB = '/home/adminbackend/web/demoplace.my.id/public_html';
|
|
|
|
function exec(conn, cmd, label) {
|
|
if (label) console.log('\n[' + label + ']');
|
|
console.log('$ ' + cmd.substring(0, 90));
|
|
return new Promise(resolve => {
|
|
conn.exec(cmd, (err, s) => {
|
|
if (err) { resolve(''); return; }
|
|
let out = '';
|
|
s.on('data', d => { out += d; process.stdout.write(d.toString()); })
|
|
.stderr.on('data', d => { out += d; process.stdout.write(d.toString()); })
|
|
.on('close', () => resolve(out));
|
|
});
|
|
});
|
|
}
|
|
|
|
async function main() {
|
|
const conn = new Client();
|
|
await new Promise((r, j) => { conn.on('ready', r).on('error', j).connect(SSH); });
|
|
console.log('[SSH] Connected\n');
|
|
|
|
const PM2 = '/home/adminbackend/.npm-global/bin/pm2';
|
|
const NM = PUB + '/node_modules';
|
|
const SA = PUB + '/.next/standalone';
|
|
|
|
// 1. Verifikasi mongoose asli tersedia di public_html/node_modules
|
|
await exec(conn, 'ls ' + NM + '/mongoose/package.json 2>/dev/null && echo "mongoose OK" || echo "mongoose TIDAK ADA"', '1. Cek mongoose asli');
|
|
|
|
// 2. Cek error log untuk nama hash yang dipakai
|
|
await exec(conn, 'grep "mongoose-" ' + PUB + '/logs/frontend-error.log 2>/dev/null | grep "Cannot find" | tail -5', '2. Hash mongoose dari error log');
|
|
|
|
// 3. Buat wrapper module mongoose-8b99e611e7552af3
|
|
const HASH_PKG = NM + '/mongoose-8b99e611e7552af3';
|
|
await exec(conn,
|
|
'mkdir -p ' + HASH_PKG + ' && ' +
|
|
'echo \'{"name":"mongoose-8b99e611e7552af3","version":"1.0.0","main":"index.js"}\' > ' + HASH_PKG + '/package.json && ' +
|
|
'echo \'module.exports = require("mongoose");\' > ' + HASH_PKG + '/index.js && ' +
|
|
'echo "Wrapper module dibuat"',
|
|
'3. Buat wrapper mongoose-8b99e611e7552af3'
|
|
);
|
|
|
|
// 4. Verifikasi wrapper
|
|
await exec(conn, 'cat ' + HASH_PKG + '/index.js', '4. Isi wrapper module');
|
|
|
|
// 5. Juga cek apakah ada hash lain yang mungkin gagal (better-sqlite3)
|
|
await exec(conn,
|
|
'grep "Cannot find module" ' + PUB + '/logs/frontend-error.log 2>/dev/null | grep -v mongoose | tail -5',
|
|
'5. Cek module lain yang mungkin gagal'
|
|
);
|
|
|
|
// 6. Cek standalone/node_modules - apakah ada?
|
|
await exec(conn,
|
|
'ls -la ' + SA + '/ | grep node_modules || echo "standalone/node_modules TIDAK ADA"',
|
|
'6. Cek standalone/node_modules'
|
|
);
|
|
|
|
// 7. Buat standalone/node_modules symlink ke public_html/node_modules
|
|
await exec(conn,
|
|
'[ -d ' + SA + '/node_modules ] && echo "Sudah ada" || ' +
|
|
'(ln -s ' + NM + ' ' + SA + '/node_modules && echo "Symlink node_modules dibuat")',
|
|
'7. Buat symlink standalone/node_modules → public_html/node_modules'
|
|
);
|
|
|
|
// 8. Restart frontend
|
|
await exec(conn, PM2 + ' restart backone-frontend --update-env && echo "RESTART OK"', '8. Restart frontend');
|
|
|
|
// 9. Tunggu startup
|
|
await new Promise(r => setTimeout(r, 8000));
|
|
|
|
// 10. Test agents page
|
|
await exec(conn,
|
|
'curl -sk -o /dev/null -w "HTTP %{http_code}" http://127.0.0.1:3000/agents',
|
|
'9. Test /agents (HTTP code)'
|
|
);
|
|
|
|
// 11. Cek error log setelah restart
|
|
await exec(conn, 'tail -10 ' + PUB + '/logs/frontend-error.log 2>/dev/null', '10. Error log setelah fix');
|
|
|
|
conn.end();
|
|
console.log('\n✅ Selesai! Refresh browser ke https://demoplace.my.id/agents\n');
|
|
}
|
|
|
|
main().catch(e => console.error('[FATAL]', e.message));
|