2015-10-28 21 views
7

Ho un progetto di nodo che voglio ospitare su Heroku. Ho esplicitamente definito versioni nodi e NPM nel mio package.json (si trova nella directory root), che assomiglia a questo:Heroku non legge il nodo versione

{ 
    "name": "*********", 
    "version": "0.0.0", 
    "private": true, 
    "engines": { 
    "node": "0.12.x", 
    "npm": "2.5.x" 
    }, 
    "scripts": { 
    "start": "node ./bin/www" 
    }, 
    "dependencies": { 
    "body-parser": "^1.13.3", 
    ... 
} 

Tuttavia, quando provo a spingere l'applicazione per Heroku

git push heroku master 

Heroku prova a creare l'app, ma sembra non essere in grado di gestire il nodo e la versione di npm. Ecco la risposta che ottengo.

remote: -----> Installing binaries 
remote:  engines.node (package.json): unspecified 
remote:  engines.npm (package.json): unspecified (use default) 
remote:   
remote:  Resolving node version (latest stable) via semver.io... 
remote:  Downloading and installing node 4.2.1... 
remote:  Using default npm version: 2.14.7 

Perché heroku non legge il nodo e la versione di npm da package.json?

risposta

3

@rdegges era giusto che il package.json non è stata commessa in modo corretto a Heroku. Quindi seguire le istruzioni di Heroku non ha funzionato per me per qualche motivo. Ecco cosa dovevo fare per farlo funzionare.

git clone <my git project> 
heroku create <app name> 

#remove package.json 
mv package.json tmp_package.json 
git add package.json 
git commit -m "removed package.json" 

#re-add package.json 
mv tmp_package.json package.json 
git add package.json 
git commit -m "re-added package.json" 

git push heroku master 
0

Questo funziona per me - assicurati di aver effettivamente commesso queste modifiche a Git e hai trasferito il repository su Heroku. Potresti anche voler specificare i numeri esatti di Nodi e NPM per la tua app di Heroku.

Mentre questo FUNZIONERÀ con le versioni variabili che hai specificato, non è consigliabile, poiché piccole modifiche nelle versioni potrebbero causare problemi.

Per riferimento, ecco i documenti Heroku sulla specifica un runtime Node.js così: https://devcenter.heroku.com/articles/nodejs-support#node-js-runtimes

0

Ho provato le altre soluzioni, ma non ha funzionato per me. Tuttavia, modificando il campo del nome in package.json, ha funzionato:

Da:

{ 
    ... 
    "name": "foo" 
    ... 
} 

A:

{ 
    ... 
    "name": "bar" 
    ... 
} 

Alternativa 2:

Quando ho dovuto fare lo stesso sul mio altro computer, non ha funzionato, ma ho provato a rimuovere package.json, ricreandolo da zero, e poi ha funzionato per qualche strano rea figlio (i metadati del file?):

$ rm package.json 
$ npm init 
0

Forse il tuo branch master non è il ramo non è aggiornato, prova a fondere il ramo che si desidera distribuire in maestro, al fine di utilizzare:

git push heroku master 
Problemi correlati