(Я использую Dokku, а не Heroku)

Я заставил это работать следующим образом:

"start": "echo Start! && ng build —-aot --prod && node server.js"

потому что сценарий постустановки не работал. Но я не хочу этого делать, потому что мое приложение отключится на время, необходимое для сборки (около минуты).

Когда я использую постинсталляцию, я вижу это в командной строке:

> [email protected] postinstall /tmp/build
> echo Postinstall... && ng build --aot --prod
Postinstall...
       Cannot read property 'glob' of null
       TypeError: Cannot read property 'glob' of null
       at ObjectSchemaTreeNode._set (/tmp/build/node_modules/@ngtools/json-schema/src/schema-tree.js:226:131)
       at new ObjectSchemaTreeNode (/tmp/build/node_modules/@ngtools/json-schema/src/schema-tree.js:211:14)
       at OneOfSchemaTreeNode._createChildProperty (/tmp/build/node_modules/@ngtools/json-schema/src/schema-tree.js:150:26)
       at OneOfSchemaTreeNode._typesPrototype.schema.oneOf.map (/tmp/build/node_modules/@ngtools/json-schema/src/schema-tree.js:163:25)
       at Array.map (native)
       at OneOfSchemaTreeNode (/tmp/build/node_modules/@ngtools/json-schema/src/schema-tree.js:162:48)
       at ArraySchemaTreeNode._createChildProperty (/tmp/build/node_modules/@ngtools/json-schema/src/schema-tree.js:150:26)
       at ArraySchemaTreeNode._set (/tmp/build/node_modules/@ngtools/json-schema/src/schema-tree.js:288:39)
       at new ArraySchemaTreeNode (/tmp/build/node_modules/@ngtools/json-schema/src/schema-tree.js:269:14)
       at ObjectSchemaTreeNode._createChildProperty (/tmp/build/node_modules/@ngtools/json-schema/src/schema-tree.js:150:26)

Есть мысли по этому поводу?

Редактировать:

По-видимому, он выполняет постинсталляцию в / tmp / build, а предварительную установку и запуск в / app. Если я сделаю:

"postinstall": "echo Postinstall... && cd /app && ng build --aot --prod",

Он говорит:

node_modules appears empty, you may need to run `npm install`

Он перемещает содержимое папки сборки в папку / app после установки или что-то в этом роде. Может я что-то упускаю

Изменить 2:

Я решил это с помощью сценария Preploy в Heroku. (Чтобы быть более понятным, я использую Dokku, который является PaaS, который я использую на моем собственном сервере)

МОЕ РЕШЕНИЕ:

В файле с именем app.json я поместил это:

{
    "scripts": {
        "dokku": {
            "predeploy": "echo Predeploy... && cd /app && ng build --aot --prod"
        }
    }
}