Я следую учебному пособию Heroku , чтобы создать список контактов с использованием стека MEAN (пример работы Heroku здесь ). Я могу развернуть его в Heroku, и он работает там. Но когда я запускаю его локально на моей машине, браузер (Chrome 67.0.3396.87 на macOS High Sierra) отображает только сообщение "Cannot GET /"
.
Я полагаю, это связано с тем, что каталог сборки Angular /dist/
, указанный в строке 12 server.js , не существует (насколько я могу судить). Начало server.js
выглядит так:
var express = require("express");
var bodyParser = require("body-parser");
var mongodb = require("mongodb");
var ObjectID = mongodb.ObjectID;
var CONTACTS_COLLECTION = "contacts";
var app = express();
app.use(bodyParser.json());
// Create link to Angular build directory
var distDir = __dirname + "/dist/";
app.use(express.static(distDir));
// Create a database variable outside of the database connection callback to reuse the connection pool in your app.
var db;
Я изучил его и обнаружил, что Angular удаляет каталог /dist/
при ng serve
. Я также обнаружил, что есть флаг --delete-output-path
, по умолчанию true
.
Я установил флаг --delete-output-path
на false
в .angular-cli.json
, как рекомендовано в этом ответе , а также в /node_modules/@angular/cli/lib/config/schema.json
. Несмотря на эти изменения (пытаясь установить флаг в одном файле, или другом файле, или в обоих файлах одновременно), я все еще получаю сообщение "Cannot GET /"
, а каталог /dist/
по-прежнему не отображается как есть.
Единственный способ, которым я смог даже запустить часть приложения, это изменить ссылку *1233* server.js на строку 12 с /dist/
на /src/
. Это позволяет / src / index.html начать загрузку с локального хоста: 5000 / (браузер отображает текст «Загрузка ...», как указано в строке 16 index.html) и запускает API контактов и работает на локальном хосте: 5000 / API / контакты /. Но компоненты Angular (список контактов, который является целью учебника) не загружаются. Возможно, потому что я изменил каталог сборки в совершенно другое место.
Что-то с каталогом /dist/
мне не хватает? Или моя проблема с тем, чтобы приложение работало локально, не имеет ничего общего с /dist/
?