(Я использую 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" } } }