Сообщение не определено в nodejs - PullRequest
0 голосов
/ 11 марта 2019

Я использую экземпляр Google cloud vm для запуска приложения моего узла, и я установил Ubuntu 16.04.6. У меня установлен nodejs v11.10.1 и npm v6.7.0, но когда я запускаю приложение, используя node app, он показывает ReferenceError: post is not defined .Я не знаю, что здесь не так.

Вот мой файл package.json:

{"name": "name",
 "version": "1.0.0",
 "description": "",
 "main": "app.js",
 "scripts": {
 "start": "node app.js",
 "deploy":"gcloud app deploy"
},
 "author": "Faiz Khan",
 "license": "ISC",
 "dependencies": {
 "bson": "^4.0.1",
 "connect-mongo": "^2.0.3",
 "ejs": "^2.6.1",
 "express": "^4.16.3",
 "express-session": "^1.15.6",
 "fabric": "^2.4.4",
 "jquery": "^3.3.1",
 "mongodb": "^2.2.33",
 "mysql": "^2.16.0",
 "node-fetch": "^2.3.0",
 "npm": "^6.4.1",
 "redis": "^2.8.0",
 "socket.io": "^2.0.3"
}
}

Вот мой пост маршрут:

app.post('/chat',(req,res,next) =>{
userName = req.body.usrnm.toUpperCase();  
res.render('classLayout',{user:userName});
});

Вот ошибка:

ReferenceError: post is not defined
at app.post (/home/equalsignlearning/redis_op/app.js:104:10)
at Layer.handle [as handle_request] (/home/equalsignlearning/redis_op/node_modules/express/lib/router/layer.js:95:5)
at next (/home/equalsignlearning/redis_op/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/home/equalsignlearning/redis_op/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/home/equalsignlearning/redis_op/node_modules/express/lib/router/layer.js:95:5)
at /home/equalsignlearning/redis_op/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/home/equalsignlearning/redis_op/node_modules/express/lib/router/index.js:335:12)
at next (/home/equalsignlearning/redis_op/node_modules/express/lib/router/index.js:275:10)
at jsonParser (/home/equalsignlearning/redis_op/node_modules/body-parser/lib/types/json.js:101:7)
at Layer.handle [as handle_request] (/home/equalsignlearning/redis_op/node_modules/express/lib/router/layer.js:95:5)

Приложение отлично работает на локальном хосте на macos и даже на heroku, но создает проблему только на ubuntu

Ответы [ 2 ]

0 голосов
/ 11 марта 2019

У package.json нет nodemon, есть зависимость от dev, и он еще не установлен на машине.

  1. Выполнить npm install --save-dev nodemon это добавит "devDependencies" к package.json
  2. Добавить "preinstall": "npm i -g nodemon", к "сценариям" в package.json

package.json

{
  "name": "name",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "preinstall": "npm i -g nodemon",
    "start": "node app.js",
    "deploy": "gcloud app deploy"
  },
  "author": "Faiz Khan",
  "license": "ISC",
  "dependencies": {
    "bson": "^4.0.1",
    "connect-mongo": "^2.0.3",
    "ejs": "^2.6.1",
    "express": "^4.16.3",
    "express-session": "^1.15.6",
    "fabric": "^2.4.4",
    "jquery": "^3.3.1",
    "mongodb": "^2.2.33",
    "mysql": "^2.16.0",
    "node-fetch": "^2.3.0",
    "npm": "^6.4.1",
    "redis": "^2.8.0",
    "socket.io": "^2.0.3"
  },
  "devDependencies": {
    "nodemon": "^1.18.10"
  }
} 

Теперь при развертывании на других машинах или при участии других разработчиков необходимо выполнить только одно: npm install

0 голосов
/ 11 марта 2019

Вам необходимо установить пакет nodemon глобально, чтобы получить доступ к нему в CLI в любом каталоге. В этом отношении следующая команда, которую вы должны выполнить. :

npm install -g nodemon

И для вашей ошибки "post" вам необходимо предоставить фрагмент кода, присутствующий в вашем app.js или в вашем файле маршрута.

...