@givemoneybiatch
Немного веб, немного гейм

Angular 5 ng build --prod не видит скрипты?

После билда, не загружаются скрипты и стили: Uncaught SyntaxError: Unexpected token <
В sources браузера видно, что вместо js, css там лежит index.html.
spoiler
5afa87059e5c4550078542.png

С сервера отдаю папку
app.use(express.static(__dirname + '/../public'));
В роутере отдаю index.html.
router.get('*', function (request, response) {
  response.status(200).sendFile(path.resolve('public/dist/index.html'));
});

Далее angular-cli.json.
spoiler
{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "project": {
    "name": "test-proj"
  },
  "apps": [{
    "root": "src",
    "outDir": "public/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": [
      "../node_modules/ngx-toastr/toastr.css",
      "../node_modules/font-awesome/css/font-awesome.min.css",
      "../node_modules/ngx-smart-modal/ngx-smart-modal.scss",
      "scss/styles.scss"
    ],
    "scripts": [],
    "environmentSource": "environments/environment.ts",
    "environments": {
      "dev": "environments/environment.ts",
      "prod": "environments/environment.prod.ts"
    }
  }],
  "e2e": {
    "protractor": {
      "config": "./protractor.conf.js"
    }
  },
  "lint": [{
      "project": "src/tsconfig.app.json"
    },
    {
      "project": "src/tsconfig.spec.json"
    },
    {
      "project": "e2e/tsconfig.e2e.json"
    }
  ],
  "test": {
    "karma": {
      "config": "./karma.conf.js"
    }
  },
  "defaults": {
    "styleExt": "scss",
    "component": {}
  }
}

index.html
<!doctype html>
<html>

<head>
  <meta charset="utf-8">
  <title>Test</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 class="app">Loading...</app-root>
</body>

</html>

Я хочу отдавать всю папку public, внутри которой: dist (файлы ангуляра, стили и т.д.) и uploads (аватарки). Если же сложить их в одну папку dist, то при каждом билде аватарки удаляются.
  • Вопрос задан
  • 758 просмотров
Пригласить эксперта
Ответы на вопрос 1
@givemoneybiatch Автор вопроса
Немного веб, немного гейм
UPDATE
ng build --prod -d /dist/ - сложит весь билд в папку public/dist
и папка public/uploads не удалится
Старый ответ
Разобрался.
В моем случае нужно запускать билд так
ng build --base-href=/dist

https://angular.io/guide/deployment
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы