w4r_dr1v3r
@w4r_dr1v3r
начинающий

В чём прикол с конфигом app.js у NodeJS 5.7?

Доброго времени суток. Из за разницы в синтаксисе и прочих прелестях миграции версий Ноды застрял на нубских вещах.

Текущий конфиг выглядит так:
<code>process.env.NODE_ENV = "development";
var express = require('express');
var app = express();
app.listen(3000);
console.log('Express started on port 3000');

var logger = require('winston');
var path = require('path');
var routes = require('./routes/index');
var users = require('./routes/users');
var nconf = require('nconf');

// view engine setup
app.set('teamplate', path.join(__dirname, 'teamplate'));
app.set('view engine', 'jade');


app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(__dirname + 'public'));
app.use('/', routes);
app.use('/users', users);

app.use(function (req, res, next) {
	if (req.url == '/chat') {
	res.render("some chat");
        res.send(env);}
	else {
	    next();
	}
});

//Middleware
app.get('/', function(req, res, next){
	res.render('index', {
		body: '<b>Jrkk</b>'
		
  });
  
// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});  

// production error handler (no stacktraces leaked to user)
app.use(function(err, req, res, next) {
  res.status(err.status || 500 || 404);
  res.render('error', {
    message: err.message,
    error: {
		
	}
  });
});

// development error handler (will print stacktrace)
  if (app.get('env') === 'development') {
  app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
      message: err.message,
      error: err
    });
  });
}
});</code>

Вывод сервера выглядит так:

Error: Cannot find module 'jade'
   at Function.Module._resolveFilename (module.js:339:15)
   at Function.Module._load (module.js:290:25)
   at Module.require (module.js:367:17)
   at require (internal/module.js:16:19)
   at new View (/usr/lib/node_modules/express/lib/view.js:78:30)
   at EventEmitter.render (/usr/lib/node_modules/express/lib/application.js:569:12)
   at ServerResponse.render (/usr/lib/node_modules/express/lib/response.js:961:7)
   at /gdetus/routes/index.js:6:7
   at Layer.handle [as handle_request] (/usr/lib/node_modules/express/lib/router/layer.js:95:5)
   at next (/usr/lib/node_modules/express/lib/router/route.js:131:13)


По причине того, что никто на Тостере не обладает скиллом говорить и отвечать на вопросы про переменную окружения NODE_ENV, я так и не понял где её выставлять в файлах, тем не менее Jade по крайней мере у меня установлен. В чём прикол?
  • Вопрос задан
  • 657 просмотров
Пригласить эксперта
Ответы на вопрос 5
@Skrolea
Я, конечно, начинающий, так что извините, если глупость сморозил, а в чем проблема устанавливать NODE_ENV в package.json, например? Типа этого:
"scripts": {
"prod": "NODE_ENV=production",
"dev": "NODE_ENV=development"
},

Ну это для linux, для windows set
"scripts": {
    "prod": "SET  \"NODE_ENV=production\" ,
    "dev": "SET \"NODE_ENV=development\"  
  },

а, да. У вас не windows
P.S. я бы всё равно сделал
npm install jade --save
npm install
Ответ написан
@frontendthug
Он не может найти модуль jade потому, что нужен require этого модуля. Он вам это говорит прямо в ошибке. Причём тут NODE_ENV ? По вашему коду окружение никакого значения тут не имеет.
Ответ написан
@antonsr98
Системный Администратор
NODE_ENV nodejs гуглится за 3 минуты, первый же линк и люди объясняют как прописать его.
Ответ написан
Комментировать
daniilborovkov
@daniilborovkov
Веб-разработчик. java-junior
Действительно, а где:
var jade = require('jade');
?
Ответ написан
sanchezzzhak
@sanchezzzhak
Ля ля ля...
в консоле через SET PORT 3001 прописывается глобально для всей системы
в nodejs доступно process.env.PORT;

В php $_ENV['port'];

обновился сегодня с 4.4 до 8.4 полет нормальный _)
Если честно меня express раздражает:

router гораздо лучше и симптоматично смотрится

const
    finalhandler = require('finalhandler'),
    http = require('http'),
    Router = require('router');

let routerOptions = {},
    router = Router(routerOptions ),
    server;

router.get('/chat/test',function(req,res) {
    let ChatController = new( require('./lib/controller/chat'));
    ChatController.actionTest().then(function(result){
          res.end(result);
   });
});

server = http.createServer(function onRequest(req, res) {
                router(req, res, finalhandler(req, res));
});
 // timeout 2 min default 120000
server.listen({port: port, timeout: 60000}, function(){
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы