node.js modules: /usr/local/lib/node_modules/fpm/bin/iffront:49: "SyntaxError: Unexpected token )"

node.js modules: /usr/local/lib/node_modules/fpm/bin/iffront:49: "SyntaxError: Unexpected token )"

我已按照步骤 here 创建了我的第一个 node.js 桌面应用程序,但在尝试打包应用程序后出现此错误:

/usr/local/lib/node_modules/fpm/bin/iffront:49
var getRoot = () => {
               ^
SyntaxError: Unexpected token )
    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:902:3

我在 运行 $ fpm --help.

时遇到同样的错误

我已经使用 sudo npm install -g --save fpm

安装了 fpm

这是 /usr/local/lib/node_modules/fpm/bin/iffront:49

处的代码
#!/usr/bin/env node

"use strict";

process.bin = process.title = 'iffront';

var path = require('path');
var fs = require('fs');
var os = require('os');
var mout = require('mout');
var osenv = require('osenv');
var iffront = require('../lib');
var pkg = require(path.join(__dirname, '..', 'package.json'));
var cli = require('../lib/util/cli');
var updateNotifier = require('update-notifier');
var colors = require('../lib/util/colors');

var options;
var command;
var commandFunc;
var notifier;

options = cli.readOptions({
    version: { type: Boolean, shorthand: 'v' }
});

if (options.version) {
    process.stdout.write(pkg.version + '\n');
    process.exit();
}

while (options.argv.remain.length) {
    command = options.argv.remain.join(' ');

    //Alias lookup
    if (iffront.abbreviations[command]) {
        command = iffront.abbreviations[command].replace(/\s/g, '.');
        break;
    }
    command = command.replace(/s/g, '.');
    // Direct lookup
    if (mout.object.has(iffront.commands, command)) {
        break;
    }
    options.argv.remain.pop();
}

// 在执行命令前,先判断是否有全局的安装包支持。
var getRoot = () => { //THIS IS THE LINE 49
  var platform = os.platform();
  var root;
  if (platform === 'win32') {
      root = path.parse(process.cwd()).root;
  } else {
      root = os.homedir();
  }
  return root;
};

我在 Ubuntu 14.04 LTS。

您使用的代码是 EcmaScript 6 的箭头函数。 您需要更新到最新版本的节点,或者您可以 运行 带有 --harmony 标志的 0.10 版本。

更新:要更新节点版本,您可以使用 nvm https://github.com/creationix/nvm

如果您打算使用 ES6 的更多功能,您应该改为使用 babel 编译您的代码。截至目前,即使 Node v5.0.0 也仅实现了 ES6 功能的 59%。

检查此 link 以了解 ES6 兼容性 table。