2017-07-15 90 views
6

我剛剛嘗試新的Babel的babel-preset-php(https://gitlab.com/kornelski/babel-preset-php#php7-to-es7-syntax-translator)。我在README文件中做了所有事情,我用npm i -S babel-preset-php安裝了預設。然後我創建了一個.babelrc文件,內容如下:Babel JS babel-preset-php錯誤

{ 
    "presets": ["php"] 
} 

安裝了cli npm i -g babel-cli。然後,我創建了一個簡單的PHP文件,該文件只包含一個簡單的函數:

<?php 

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

並試圖與babel number.php -o file.js運行transpiler。但是我在腳本的執行得到一個錯誤:

/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是experient,等等任何想法可能發生?

+0

您使用的是webpack嗎? – Li357

+0

我對Node工作流程並不熟悉。我只是按照README文件中的說明操作。所以我想我沒有使用webpack。 –

+0

你使用的是什麼版本的節點和babel?你可以通過運行'node --version'和'babel --version'找到。 –

回答

2

編輯:好的,我剛剛意識到你正在調用公共職能以外的類。這不正確的PHP。你不能在一個類之外定義一個公共的函數。你的PHP代碼是錯誤的。

+0

'babel Number.php -o --presets = php file.js'返回'file.js不存在'。難道它不是被創造出來的嗎? –

+0

你必須寫:'babel Number.php -o file.js --presets = php'。目前,您正在將第二個選項放在第一個選項的鍵和值之間。檢查我編輯的答案。 –

+0

我改正了PHP代碼,並且像你說的那樣調用,但仍然得到相同的「意外令牌」錯誤。 –

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更新爲最新版本,然後重試。