узел js сервер `$ {req.method} $ {req.url}` - PullRequest
0 голосов
/ 17 ноября 2018

Я получил этот код где-то некоторое время назад с идеей вернуться, чтобы понять его еще немного. я уже некоторое время запускаю его на пи без проблем, но мне нужно было восстановить резервную копию операционной системы с того момента, когда у меня был запущен веб-сервер, и с тех пор я не смог его запустить, я продолжаю получать Синтаксическая ошибка (ниже), если я запускаю тот же код на другом компьютере, он работает нормально. Любая идея, где я могу посмотреть все из идеи?

Кроме того, я не знаю, что означает $, это jquery?

ОШИБКА

 etc/server/app.js:10
  console.log(`${req.method} ${req.url}`);
              ^
SyntaxError: Unexpected token ILLEGAL
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:906:3

NICKED CODE

var http = require('http').createServer(handler); //require http server, and create server with function handler()
const path = require('path');
const url = require('url');
var fs = require('fs'); //require filesystem module

var io = require('socket.io')(http) //require socket.io module and pass the http object (server)

http.listen(3000); //listen to port 8080
function handler (req, res) { //create server
  console.log(`${req.method} ${req.url}`);

  const parsedUrl = url.parse(req.url);
  // extract URL path
  let pathname = `.${parsedUrl.pathname}`;
  // maps file extention to MIME types
  const mimeType = {
    '.ico': 'image/x-icon',
    '.html': 'text/html',
    '.js': 'text/javascript',
    '.json': 'application/json',
    '.css': 'text/css',
    '.png': 'image/png',
    '.jpg': 'image/jpeg',
    '.wav': 'audio/wav',
    '.mp3': 'audio/mpeg',
    '.svg': 'image/svg+xml',
    '.pdf': 'application/pdf',
    '.doc': 'application/msword',
    '.eot': 'appliaction/vnd.ms-fontobject',
    '.ttf': 'aplication/font-sfnt'
  };

  fs.exists(pathname, function (exist){
      if(!exist){
        //file not found, return 404
        res.writeHead(404, {'Content-Type': 'text/html'});
        return res.end("404 Not Found");
      }

      //if directory, return index.html
      if(fs.statSync(pathname).isDirectory()){
          pathname += '/index.html';
      }

      //read file
      fs.readFile(pathname, function(err, data){
          if(err){
            res.writeHead(500, {'Content-Type': 'text/html'});
            return res.end("500 Error getting file.");
          }else{
              const ext = path.parse(pathname).ext;
              res.setHeader('Content-type', mimeType[ext] || 'text/plane');
              res.end(data);
            }
        })
  });
}

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Это шаблонный шаблон ES6 +: ${req.method} ${req.url}.

Также известен в других языках как "интерполяция строк".Это не имеет ничего общего с JQuery.Подробнее об этом здесь .

В этом случае это просто печать метода запроса и URL запроса на консоль.Что-то вроде: "GET http://localhost:3000/posts".Вы можете думать об этом как о регистрации запросов в командной строке.

Скорее всего, вы ошиблись, если вы используете более старую версию Node, которая ее не поддерживает.запустите следующее в вашем терминале:

node -v

результат 0.12.18 или меньше?если это так, то это слишком старо.

существуют следующие решения:

  • Вы можете обновить свою версию узла

  • Вы можете просто полностью удалить строку, так как она распечатывается только на консоль и фактически не имеет никакого программного эффекта (если вам фактически не нужно видеть, что она печатает).

  • Вытакже можно изменить его на более старый стиль объединения строк, например:

    console.log(req.method + ' ' + req.url)

Лично я бы рекомендовал обновить вашу версию узла до последней версии LTSверсия.

0 голосов
/ 17 ноября 2018

console.log( $ {req.method} $ {req.url} ); это новый способ объединения строк в javascript.Вы пытаетесь создать строку с двумя переменными javascript с пробелом между ними. Это просто показывает некоторую информацию о терминале, вы удаляете это и можете продолжить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...