Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

updated ng-cli with working project now "Cannot GET /"?

I had a working ng cli project which had been created with the beta.21 version of the cli. I wanted to update it to use the latest structure of the cli projects, so created a new project with the cli (v.1.0.0). I then essentially dropped the contents of my existing projects app file into the new project and went from there.

Strangely though, my new project builds without issue and produces the sizes and chunks I was expecting. If I run my express based backend which serves up the contents of the ./dist directory, then my app works as expected. However, if I run ng serve I get the error Cannot GET / in the browser.

I really am not sure what could have caused this (my biggest suspicion is that my project has the file structure with client/src/app rather than the standard src/app however, I have changed all the references to the file path I could find and as the build is working, I assume that is fine)?

Any ideas / suggestions on how to debug further?

Update:

client/src/index.html:

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>DemoProj</title>
  <base href="/">

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
  <app-root>Loading...</app-root>
</body>
</html>

.angular-cli.json:

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "project": {
    "name": "coty-monitoring-system"
  },
  "apps": [
    {
      "root": "client/src",
      "outDir": "dist",
      "assets": [
        "assets",
        "favicon.ico"
      ],
      "index": "index.html",
      "main": "main.ts",
      "polyfills": "polyfills.ts",
      "test": "test.ts",
      "tsconfig": "tsconfig.app.json",
      "testTsconfig": "tsconfig.spec.json",
      "prefix": "app",
      "styles": [
        "styles.css"
      ],
      "scripts": [
        "../../node_modules/chart.js/dist/Chart.bundle.js",
        "../../node_modules/hammerjs/hammer.min.js"
      ],
      "environmentSource": "environments/environment.ts",
      "environments": {
        "dev": "environments/environment.ts",
        "prod": "environments/environment.prod.ts"
      }
    }
  ],
  "e2e": {
    "protractor": {
      "config": "./protractor.conf.js"
    }
  },
  "lint": [
    {
      "project": "client/src/tsconfig.app.json"
    },
    {
      "project": "client/src/tsconfig.spec.json"
    },
    {
      "project": "e2e/tsconfig.e2e.json"
    }
  ],
  "test": {
    "karma": {
      "config": "./karma.conf.js"
    }
  },
  "defaults": {
    "styleExt": "css",
    "component": {}
  }
}

browser network tab of failed request:

enter image description here

Here is the page source of what the cli returns:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /</pre>
</body>
</html>
like image 776
George Edwards Avatar asked May 02 '17 15:05

George Edwards


People also ask

Why my ng serve is not working?

To solve the error "ng: command not found", install the angular cli package globally by running npm install -g @angular/cli@latest and restart your terminal. If the command fails, run it with sudo and make sure the correct PATH is set in your system's environment variable.

Why the serve command requires to be run in an Angular project but a project definition could not be found?

This error often occurs when a project you are running is not an Angular project. It may also be the case when you download an Angular project but do not have latest dependencies installed on your machine. Installing latest dependencies should fix the problem.


1 Answers

Seems fine. Probably you didn't run ng serve in the project's folder.

When using CLI you have to run ng serve where app.module.ts lies **usually :

$ projectFolder\src\app

like image 180
Tsakiroglou Fotis Avatar answered Oct 16 '22 16:10

Tsakiroglou Fotis