Kann nicht öffnen Sie SSL-Schlüssel-Datei im Knoten server - ENOENT
Ich bin versucht zu implementieren ein Projekt, das ich geerbt heroku mit grunt buildcontrol für die erste Zeit. Obwohl ich in der Lage bin zu erstellen und bereitzustellen, auf ausführen bekomme ich eine Fehlermeldung:
ENOENT: keine solche Datei oder das Verzeichnis öffnen 'ssl/keys/server.key'
Überprüfen Sie das Verzeichnis "dist", in der Tat, es ist kein ssl-Verzeichnis. So, ich habe es nach /dist-ohne Erfolg. Zu denken, dass app.js innerhalb von /dist/server/könnte eingeschränkt werden, um das Verzeichnis kopiert habe ich die ssl-Verzeichnis gibt es - wieder das gleiche Problem. Innerhalb von /dist/server/app.js:
var options = {
key: fs.readFileSync('ssl/keys/server.key'),
cert: fs.readFileSync('ssl/keys/server.crt')
};
//Setup server
var app = express();
var server = require('https').createServer(options, app);
Wo ist es zu suchen die ssl-Verzeichnis, wenn nicht in den server Ordner?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
readFileSync
Funktion wertet die relativen Pfade zu den aktuellen Arbeitsverzeichnis der Knoten ausführbare Datei, die auf Heroku ist/app
, nicht den dist Ordner. Der Zugriff auf Ihre dist-Ordner als relativer Pfad, den Sie verwenden solltenWeg.resolve
:Alternativen sind:
fs.readFileSync(__dirName + '/dist/ssl/keys/server.key')
fs.readFileSync(process.cwd() + '/dist/ssl/keys/server.key')
fs.readFileSync(path.join(__dirName, 'dist', 'ssl', 'keys', 'server.key'))
Aber ich habe das Gefühl, dass
path.resolve
ist die richtige Mischung von präzise und robust.Können Sie die "__dirname" - variable auf das Verzeichnis zugreifen Weg von Ihrer app, wenn Sie die app.js neben Ihrem dist-Ordner, wo es die /ssl/keys es wird so Aussehen wie diese:
Wenn Sie sich
__dirname
imapp.js
erhalten Sie/dist/server
.Gespeichert, die Ihr
ssl
Verzeichnis in/dist/server
.So, Ihr
key
Weg ist/dist/server/ssl/keys/server.key
und Ihrecert
Weg ist/dist/server/ssl/keys/server.crt
du code sollte sein:
Wenn Sie speichern
ssl
Verzeichnis in/dist
:Ihre
key
Weg ist/dist/ssl/keys/server.key
und Ihrecert
Weg ist/dist/ssl/keys/server.crt
Nun, der code sollte sein:
Ich bin mit dem gleichen auf einem meiner Projekt-und es funktioniert gut, ohne mit
path.resolve
oderpath.join
. Auch die../
parent directory-Darstellung wird gelöst, indemfs.readFileSync
selbst.Den readFileSync Funktion muss ein relativer Pfad, so können Sie mit dem path-Modul zu erhalten, der den relativen Pfad der keys.