title: Error: ENOENT: no such file or directory, open 'dist/index.html'
body: <p>So, I've been trying for days to get a angular universal app running but I keep getting this issue when I try to run the server like </p>
  
  <pre><code>npm run dev:ssr
  </code></pre>
  
  <p>I have set my server.ts file as in the below link
  <a href="https://github.com/Angular-RU/angular-universal-starter/blob/master/server.ts" rel="nofollow noreferrer">https://github.com/Angular-RU/angular-universal-starter/blob/master/server.ts</a></p>
  
  <p>My server.ts file is as below</p>
  
  <pre><code>import 'zone.js/dist/zone-node';
  
  import { ngExpressEngine } from '@nguniversal/express-engine';
  import * as express from 'express';
  import { join } from 'path';
  
  import { AppServerModule } from './src/main.server';
  import { APP_BASE_HREF } from '@angular/common';
  import { existsSync } from 'fs';
  
  // ssr DOM
  const domino = require('domino');
  const fs = require('fs');
  const path = require('path');
  // index from browser build!
  const template = fs.readFileSync(path.join('.', 'dist', 'index.html')).toString();
  // for mock global window by domino
  const win = domino.createWindow(template);
  // from server build
  const files = fs.readdirSync(`${process.cwd()}/dist-server`);
  // mock
  global['window'] = win;
  // not implemented property and functions
  Object.defineProperty(win.document.body.style, 'transform', {
    value: () =&gt; {
      return {
        enumerable: true,
        configurable: true,
      };
    },
  });
  // mock documnet
  global['document'] = win.document;
  // othres mock
  global['CSS'] = null;
  // global['XMLHttpRequest'] = require('xmlhttprequest').XMLHttpRequest;
  global['Prism'] = null;
  
  // The Express app is exported so that it can be used by serverless Functions.
  export function app() {
    const server = express();
    const distFolder = join(process.cwd(), 'dist');
    const indexHtml = existsSync(join(distFolder, 'index.original.html')) ? 'index.original.html' : 'index';
  
    // Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine)
    server.engine('html', ngExpressEngine({
      bootstrap: AppServerModule,
    }));
  
    server.set('view engine', 'html');
    server.set('views', distFolder);
  
    // Example Express Rest API endpoints
    // server.get('/api/**', (req, res) =&gt; { });
    // Serve static files from /browser
    server.get('*.*', express.static(distFolder, {
      maxAge: '1y'
    }));
  
    // All regular routes use the Universal engine
    server.get('*', (req, res) =&gt; {
      res.render(indexHtml, { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }] });
    });
  
    return server;
  }
  
  function run() {
    const port = process.env.PORT || 4000;
  
    // Start up the Node server
    const server = app();
    server.listen(port, () =&gt; {
      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 &amp;&amp; mainModule.filename || '';
  if (moduleFilename === __filename || moduleFilename.includes('iisnode')) {
    run();
  }
  
  export * from './src/main.server';
  </code></pre>
  
  <p>my app.server.module.ts file:</p>
  
  <pre><code>import { NgModule } from '@angular/core';
  import { ServerModule } from '@angular/platform-server';
  
  import { AppModule } from './app.module';
  import { AppComponent } from './app.component';
  
  @NgModule({
    imports: [
      AppModule,
      ServerModule,
    ],
    bootstrap: [AppComponent],
  })
  export class AppServerModule {}
  </code></pre>
  
  <p>I am using Angular 9 and at a stage where I am thinking of dropping the idea of using angular universal at all. Seems it its way too unstable to be used at the moment.</p>
  
  <p>Contents of dist folder:</p>
  
  <p><a href="https://i.stack.imgur.com/ENsXV.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ENsXV.jpg" alt="enter image description here"></a></p>
  
  <p>Does anyone here have a solution to this? </p>