Babel JS babel-preset-php错误

时间:2017-07-15 16:56:39

标签: javascript php node.js babeljs

我只是尝试新的Babel的babel-preset-php(https://gitlab.com/kornelski/babel-preset-php#php7-to-es7-syntax-translator)。我在README文件中完成了所有操作,我使用npm i -S babel-preset-php安装了预设。然后我创建了一个.babelrc文件,其中包含以下内容;

{
    "presets": ["php"]
}

使用npm i -g babel-cli安装cli。然后我创建了一个只包含一个简单函数的简单PHP文件:

<?php

function addCalculator($x, $y)
{
    return $x + $y;
}

并尝试使用babel number.php -o file.js运行转发器。但是我在执行脚本时遇到错误:

/home/claudio/Documents/Development/babel/node_modules/babel-preset-php/lib/plugins.js:6
        Identifier(p) {
                  ^
SyntaxError: Unexpected token ( (While processing preset: "/home/claudio/Documents/Development/babel/node_modules/babel-preset-php/index.js")
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 Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/home/claudio/Documents/Development/babel/node_modules/babel-preset-php/index.js:1:79)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)

我不熟悉nodejs和npm,所以对可能发生的事情有任何想法吗?

2 个答案:

答案 0 :(得分:2)

编辑:好的,我刚刚意识到你在课堂外调用公共职能。这不是正确的PHP。您不能将函数定义为类外的公共函数。您的PHP代码是错误的。

答案 1 :(得分:2)

在触及PHP代码之前发出错误。事实上,babel-preset-php本身的this particular line错误:

return {
    visitor: {
        Identifier(p) { // This is the invalid line
            if (p.node.name != 'Exception' || p.scope.hasBinding("Exception")) {
                return;
            }

此预设使用ECMAScript 2015中添加的速记对象初始值设定项。这里可能发生的是您的本地Javascript环境不支持ES2015语法。

我建议将nodebabel更新为最新版本,然后重试。