我只是尝试新的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,所以对可能发生的事情有任何想法吗?
答案 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语法。
我建议将node
和babel
更新为最新版本,然后重试。