#javascript #node.js #heroku #deployment #crash
#javascript #node.js #heroku #развертывание #сбой
Вопрос:
Я только начал изучать NodeJS и попытался развернуть его в heroku. Когда я пытаюсь использовать «heroku open», произошел этот журнал.
2020-10-08T14:19:52.778660 00:00 app[web.1]: at Module.load (internal/modules/cjs/loader.js:977:32)
2020-10-08T14:19:52.778661 00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:877:14)
2020-10-08T14:19:52.778661 00:00 app[web.1]: at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) {
2020-10-08T14:19:52.778662 00:00 app[web.1]: code: 'MODULE_NOT_FOUND',
2020-10-08T14:19:52.778662 00:00 app[web.1]: requireStack: [ '/app/index.js' ]
2020-10-08T14:19:52.778663 00:00 app[web.1]: }
2020-10-08T14:19:52.810513 00:00 app[web.1]: npm ERR! code ELIFECYCLE
2020-10-08T14:19:52.811098 00:00 app[web.1]: npm ERR! errno 1
2020-10-08T14:19:52.828543 00:00 app[web.1]: npm ERR! nodejs_crashcourse@1.0.0 prestart: `node index`
2020-10-08T14:19:52.828751 00:00 app[web.1]: npm ERR! Exit status 1
2020-10-08T14:19:52.829002 00:00 app[web.1]: npm ERR!
2020-10-08T14:19:52.829206 00:00 app[web.1]: npm ERR! Failed at the nodejs_crashcourse@1.0.0 prestart script.
2020-10-08T14:19:52.829406 00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2020-10-08T14:19:52.847042 00:00 app[web.1]:
2020-10-08T14:19:52.847382 00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2020-10-08T14:19:52.847546 00:00 app[web.1]: npm ERR! /app/.npm/_logs/2020-10-08T14_19_52_830Z-debug.log
2020-10-08T14:19:52.945200 00:00 heroku[web.1]: Process exited with status 1
2020-10-08T14:19:52.999786 00:00 heroku[web.1]: State changed from starting to crashed
2020-10-08T15:48:09.000458 00:00 heroku[web.1]: State changed from crashed to starting
2020-10-08T15:48:11.710414 00:00 heroku[web.1]: Starting process with command `npm start`
2020-10-08T15:48:14.879546 00:00 app[web.1]:
2020-10-08T15:48:14.879557 00:00 app[web.1]: > nodejs_crashcourse@1.0.0 prestart /app
2020-10-08T15:48:14.879558 00:00 app[web.1]: > node index
2020-10-08T15:48:14.879558 00:00 app[web.1]:
2020-10-08T15:48:15.028554 00:00 app[web.1]: internal/modules/cjs/loader.js:960
2020-10-08T15:48:15.028556 00:00 app[web.1]: throw err;
2020-10-08T15:48:15.028556 00:00 app[web.1]: ^
2020-10-08T15:48:15.028557 00:00 app[web.1]:
2020-10-08T15:48:15.028557 00:00 app[web.1]: Error: Cannot find module 'nodemon'
2020-10-08T15:48:15.028557 00:00 app[web.1]: Require stack:
2020-10-08T15:48:15.028558 00:00 app[web.1]: - /app/index.js
2020-10-08T15:48:15.028559 00:00 app[web.1]: at Function.Module._resolveFilename (internal/modules/cjs/loader.js:957:15)
2020-10-08T15:48:15.028559 00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:840:27)
2020-10-08T15:48:15.028560 00:00 app[web.1]: at Module.require (internal/modules/cjs/loader.js:1019:19)
2020-10-08T15:48:15.028560 00:00 app[web.1]: at require (internal/modules/cjs/helpers.js:77:18)
2020-10-08T15:48:15.028561 00:00 app[web.1]: at Object.<anonymous> (/app/index.js:15:17)
2020-10-08T15:48:15.028561 00:00 app[web.1]: at Module._compile (internal/modules/cjs/loader.js:1133:30)
2020-10-08T15:48:15.028562 00:00 app[web.1]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)
2020-10-08T15:48:15.028562 00:00 app[web.1]: at Module.load (internal/modules/cjs/loader.js:977:32)
2020-10-08T15:48:15.028562 00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:877:14)
2020-10-08T15:48:15.028563 00:00 app[web.1]: at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) {
2020-10-08T15:48:15.028563 00:00 app[web.1]: code: 'MODULE_NOT_FOUND',
2020-10-08T15:48:15.028564 00:00 app[web.1]: requireStack: [ '/app/index.js' ]
2020-10-08T15:48:15.028564 00:00 app[web.1]: }
2020-10-08T15:48:15.045283 00:00 app[web.1]: npm ERR! code ELIFECYCLE
2020-10-08T15:48:15.045797 00:00 app[web.1]: npm ERR! errno 1
2020-10-08T15:48:15.055020 00:00 app[web.1]: npm ERR! nodejs_crashcourse@1.0.0 prestart: `node index`
2020-10-08T15:48:15.055328 00:00 app[web.1]: npm ERR! Exit status 1
2020-10-08T15:48:15.055591 00:00 app[web.1]: npm ERR!
2020-10-08T15:48:15.055865 00:00 app[web.1]: npm ERR! Failed at the nodejs_crashcourse@1.0.0 prestart script.
2020-10-08T15:48:15.056088 00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2020-10-08T15:48:15.066474 00:00 app[web.1]:
2020-10-08T15:48:15.066992 00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2020-10-08T15:48:15.067250 00:00 app[web.1]: npm ERR! /app/.npm/_logs/2020-10-08T15_48_15_057Z-debug.log
2020-10-08T15:48:15.168797 00:00 heroku[web.1]: Process exited with status 1
2020-10-08T15:48:15.225575 00:00 heroku[web.1]: State changed from starting to crashed
2020-10-08T15:48:15.228118 00:00 heroku[web.1]: State changed from crashed to starting
2020-10-08T15:48:18.092770 00:00 heroku[web.1]: Starting process with command `npm start`
2020-10-08T15:48:22.002464 00:00 app[web.1]:
2020-10-08T15:48:22.002544 00:00 app[web.1]: > nodejs_crashcourse@1.0.0 prestart /app
2020-10-08T15:48:22.002550 00:00 app[web.1]: > node index
2020-10-08T15:48:22.002551 00:00 app[web.1]:
2020-10-08T15:48:22.164769 00:00 app[web.1]: internal/modules/cjs/loader.js:960
2020-10-08T15:48:22.164771 00:00 app[web.1]: throw err;
2020-10-08T15:48:22.164771 00:00 app[web.1]: ^
2020-10-08T15:48:22.164772 00:00 app[web.1]:
2020-10-08T15:48:22.164772 00:00 app[web.1]: Error: Cannot find module 'nodemon'
2020-10-08T15:48:22.164772 00:00 app[web.1]: Require stack:
2020-10-08T15:48:22.164773 00:00 app[web.1]: - /app/index.js
2020-10-08T15:48:22.164794 00:00 app[web.1]: at Function.Module._resolveFilename (internal/modules/cjs/loader.js:957:15)
2020-10-08T15:48:22.164795 00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:840:27)
2020-10-08T15:48:22.164801 00:00 app[web.1]: at Module.require (internal/modules/cjs/loader.js:1019:19)
2020-10-08T15:48:22.164801 00:00 app[web.1]: at require (internal/modules/cjs/helpers.js:77:18)
2020-10-08T15:48:22.164801 00:00 app[web.1]: at Object.<anonymous> (/app/index.js:15:17)
2020-10-08T15:48:22.164802 00:00 app[web.1]: at Module._compile (internal/modules/cjs/loader.js:1133:30)
2020-10-08T15:48:22.164802 00:00 app[web.1]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)
2020-10-08T15:48:22.164802 00:00 app[web.1]: at Module.load (internal/modules/cjs/loader.js:977:32)
2020-10-08T15:48:22.164803 00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:877:14)
2020-10-08T15:48:22.164812 00:00 app[web.1]: at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) {
2020-10-08T15:48:22.164823 00:00 app[web.1]: code: 'MODULE_NOT_FOUND',
2020-10-08T15:48:22.164823 00:00 app[web.1]: requireStack: [ '/app/index.js' ]
2020-10-08T15:48:22.164824 00:00 app[web.1]: }
2020-10-08T15:48:22.214230 00:00 app[web.1]: npm ERR! code ELIFECYCLE
2020-10-08T15:48:22.214698 00:00 app[web.1]: npm ERR! errno 1
2020-10-08T15:48:22.224614 00:00 app[web.1]: npm ERR! nodejs_crashcourse@1.0.0 prestart: `node index`
2020-10-08T15:48:22.224863 00:00 app[web.1]: npm ERR! Exit status 1
2020-10-08T15:48:22.225157 00:00 app[web.1]: npm ERR!
2020-10-08T15:48:22.225473 00:00 app[web.1]: npm ERR! Failed at the nodejs_crashcourse@1.0.0 prestart script.
2020-10-08T15:48:22.225688 00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2020-10-08T15:48:22.236263 00:00 app[web.1]:
2020-10-08T15:48:22.236699 00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2020-10-08T15:48:22.236908 00:00 app[web.1]: npm ERR! /app/.npm/_logs/2020-10-08T15_48_22_226Z-debug.log
2020-10-08T15:48:22.378922 00:00 heroku[web.1]: Process exited with status 1
2020-10-08T15:48:22.443106 00:00 heroku[web.1]: State changed from starting to crashed
2020-10-08T15:48:23.480249 00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=nameless-anchorage-18480.herokuapp.com request_id=11b5f46a-aeb7-4a22-aa83-87d815a763ba fwd="114.124.170.141" dyno= connect= service= status=503 bytes= protocol=https
2020-10-08T15:48:24.761780 00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=nameless-anchorage-18480.herokuapp.com request_id=41ce56e1-5274-47ef-80a7-bf712b681836 fwd="114.124.170.141" dyno= connect= service= status=503 bytes= protocol=https
2020-10-08T15:55:05.602396 00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=nameless-anchorage-18480.herokuapp.com request_id=c04fbdb5-e9ac-48fd-bc76-48b125727fd2 fwd="114.124.178.60" dyno=
connect= service= status=503 bytes= protocol=https
2020-10-08T15:55:06.230385 00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=nameless-anchorage-18480.herokuapp.com request_id=87220f0f-1ae0-4f91-82f4-832bebfc59f0 fwd="114.124.178.60" dyno= connect= service= status=503 bytes= protocol=https
2020-10-08T15:56:44.427873 00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=nameless-anchorage-18480.herokuapp.com request_id=cf47f697-a1ca-49d5-81c6-7bebeb363739 fwd="114.124.178.60" dyno=
connect= service= status=503 bytes= protocol=https
2020-10-08T15:56:44.988746 00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=nameless-anchorage-18480.herokuapp.com request_id=3c72b009-f912-4de6-9e5c-800a8936386d fwd="114.124.178.60" dyno= connect= service= status=503 bytes= protocol=https
Я искал решения в Интернете и пробовал эти решения:
- перезапуск heroku
- используйте process.env.PORT
- npm очищает кэш
- проверено, что я нахожусь в главной ветке
- добавлен движок с правильной версией
- Используйте «scripts»: { «start»: «узел index.js » }
Похоже, ни один из них не работает. Вот мой package.json:
{
"name": "nodejs_crashcourse",
"version": "1.0.0",
"engines": {
"node": "12.16.3",
"npm": "6.14.8"
},
"description": "Node Crash Course",
"main": "index.js",
"scripts": {
"start": "node index",
"dev": "nodemon index"
},
"repository": {
"type": "git",
"url": "git https://github.com/nodejs_crashcourse.git"
},
"keywords": [
"nodejs",
"crashcourse"
],
"author": "Me",
"license": "ISC",
"bugs": {
"url": "https://github.com"
},
"homepage": "https://github.com",
"dependencies": {
"uuid": "^8.3.1"
},
"devDependencies": {
"nodemon": "^2.0.4"
}
}
и вот мой index.js:
const http = require("http");
const path = require("path");
const fs = require("fs");
const nodemon = require("nodemon");
const server = http.createServer((req, res) => {
// Build file path
let filePath = path.join(
__dirname,
"public",
req.url === "/" ? "index.html" : req.url
);
// Get extension of the file
let extname = path.extname(filePath);
// Initial content type
let contentType = "text/html";
// Check ext and set content type
switch (extname) {
case ".js":
contentType = "text/javascript";
break;
case ".css":
contentType = "text/css";
break;
case ".json":
contentType = "application/json";
break;
case ".png":
contentType = "image/png";
break;
case ".jpg":
contentType = "image/jpg";
break;
}
// Read file
fs.readFile(filePath, (err, content) => {
if (err) {
// Page not found error
if (err.code == "ENOENT") {
fs.readFile(
path.join(__dirname, "public", "404.html"),
(err, content) => {
res.writeHead(200, { "Content-Type": "text/html" });
res.end(content, "utf8");
}
);
} else {
// Other server error
res.writeHead(500);
res.end(`Server Error: ${err.code}`);
}
} else {
// Success
res.writeHead(200, { "Content-Type": contentType });
res.end(content, "utf8");
}
});
});
//Check if environment variable exists and if not set 5000 as default
const port = process.env.PORT || 5000;
server.listen(port, () => {
console.log("App is running on port " port);
});
Ответ №1:
Я думаю, что проблема в const nodemon = require("nodemon");
строке. Просто удалите его.
Комментарии:
1. Вау не ожидал, что это будет решением. Он работал нормально, когда я использовал «запуск npm» или «запуск npm dev», почему он выдает ошибку на heroku?
2. Я думаю, что Heroku игнорирует зависимости разработчиков, поэтому, когда он сталкивается с этой строкой, он выходит из строя, потому что не может найти этот пакет.