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

时间:2015-12-04 10:33:14

标签: node.js node-modules

我已按照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上。

2 个答案:

答案 0 :(得分:1)

您使用的代码是EcmaScript 6的箭头功能。 您需要更新到最新版本的节点,或者您可以使用--harmony flag运行0.10版本。

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

答案 1 :(得分:1)

如果您打算使用ES6的更多功能,则应使用babel编译代码。因为即使是Node v5.0.0,到目前为止只实现了59%的ES6功能。

检查此link以获取ES6兼容性表。