basic node.js“function”vs“=>”符号

时间:2017-03-27 14:19:44

标签: javascript node.js

我必须修改基本Node.js文件上的代码才能使其工作,我想知道为什么?

这失败了:

const server = http.createServer((req, res) => {

这有效:

var server = http.createServer(function(req, res){

错误:

  

/my-app/tmp/hello2.js:6 var server = http.createServer((req,res)=> {^ SyntaxError:Module._compile中的意外标记>(module.js:439:25 )在函数的Function.Module._load(module.js:312:12)的Module.load(module.js:356:32)处的Object.Module._extensions..js(module.js:474:10)处。 Module.runMain(module.js:497:10)在node.js启动时(node.js:119:16):945:3

完整代码

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

//const server = http.createServer((req, res) => {
// above *wont work*?? below works
var server = http.createServer(function(req, res){
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

// server.listen(port, hostname, () => {
// above *wont work*?? below works
server.listen(port, hostname, function() {
  console.log(`Server running at http://${hostname}:${port}/`);
});

1 个答案:

答案 0 :(得分:1)

这是因为你的Node.js不支持ES6的标准功能

两种解决方案

  1. 您必须编辑package.json

    android:focusableInTouchMode="true"

    并运行<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical" android:focusableInTouchMode="true"> ... <EditText android:id="@+id/editText" android:layout_width="100dp" android:layout_height="wrap_content" /> ... </LinearLayout>

    有关详情:How to run Node.js app with ES6 features enabled?

  2. 更新您的Node.js

    {
      "dependencies": {
      "babel-cli": "^6.0.0",
      "babel-preset-es2015": "^6.0.0"
     },
     "scripts": {
       "start": "babel-node --presets es2015 app.js"
     }
    }