mirror of https://github.com/abpframework/abp.git
10 changed files with 24 additions and 92 deletions
@ -1,78 +0,0 @@ |
|||||
import { environment } from './environments/environment'; |
|
||||
if (environment.production === false) { |
|
||||
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; |
|
||||
} |
|
||||
import 'zone.js/node'; |
|
||||
import { APP_BASE_HREF } from '@angular/common'; |
|
||||
import { CommonEngine } from '@angular/ssr/node'; |
|
||||
import express from 'express'; |
|
||||
import { existsSync } from 'node:fs'; |
|
||||
import { join } from 'node:path'; |
|
||||
import bootstrap from './main.server'; |
|
||||
|
|
||||
// The Express app is exported so that it can be used by serverless Functions.
|
|
||||
export function app(): express.Express { |
|
||||
const server = express(); |
|
||||
const distFolder = join(process.cwd(), 'dist/dev-app/browser'); |
|
||||
const indexHtml = existsSync(join(distFolder, 'index.original.html')) |
|
||||
? join(distFolder, 'index.original.html') |
|
||||
: join(distFolder, 'index.html'); |
|
||||
|
|
||||
const commonEngine = new CommonEngine(); |
|
||||
|
|
||||
server.set('view engine', 'html'); |
|
||||
server.set('views', distFolder); |
|
||||
|
|
||||
// Example Express Rest API endpoints
|
|
||||
// server.get('/api/**', (req, res) => { });
|
|
||||
// Serve static files from /browser
|
|
||||
server.get('/.well-known/*', (_, res) => res.sendStatus(404)); |
|
||||
server.get( |
|
||||
'*.*', |
|
||||
express.static(distFolder, { |
|
||||
maxAge: '1y', |
|
||||
}), |
|
||||
); |
|
||||
|
|
||||
// All regular routes use the Angular engine
|
|
||||
server.get('*', (req, res, next) => { |
|
||||
const { protocol, originalUrl, baseUrl, headers } = req; |
|
||||
commonEngine |
|
||||
.render({ |
|
||||
bootstrap, |
|
||||
documentFilePath: indexHtml, |
|
||||
url: `${protocol}://${headers.host}${originalUrl}`, |
|
||||
publicPath: distFolder, |
|
||||
providers: [ |
|
||||
{ provide: APP_BASE_HREF, useValue: baseUrl }, |
|
||||
{ provide: 'cookies', useValue: JSON.stringify(req.headers.cookie) }, |
|
||||
], |
|
||||
}) |
|
||||
.then(html => res.send(html)) |
|
||||
.catch(err => next(err)); |
|
||||
}); |
|
||||
|
|
||||
return server; |
|
||||
} |
|
||||
|
|
||||
function run(): void { |
|
||||
const port = process.env['PORT'] || 4000; |
|
||||
|
|
||||
// Start up the Node server
|
|
||||
const server = app(); |
|
||||
server.listen(port, () => { |
|
||||
console.log(`Node Express server listening on http://localhost:${port}`); |
|
||||
}); |
|
||||
} |
|
||||
|
|
||||
// Webpack will replace 'require' with '__webpack_require__'
|
|
||||
// '__non_webpack_require__' is a proxy to Node 'require'
|
|
||||
// The below code is to ensure that the server is run only when not requiring the bundle.
|
|
||||
declare const __non_webpack_require__: NodeRequire; |
|
||||
const mainModule = __non_webpack_require__.main; |
|
||||
const moduleFilename = (mainModule && mainModule.filename) || ''; |
|
||||
if (moduleFilename === __filename || moduleFilename.includes('iisnode')) { |
|
||||
run(); |
|
||||
} |
|
||||
|
|
||||
export default bootstrap; |
|
||||
Loading…
Reference in new issue