2017-07-14 96 views
1

我目前正在嘗試學習使用ReactJS,但我遇到了問題,我似乎無法找到正確的解決方法。ReactJS無法識別的令牌導入

我已經安裝了npm,並在我的項目的根目錄下運行了npm --install reactnpm --install react-dom。該項目是HTML/Javascript發佈到PHP後端,我沒有使用NodeJS,它似乎在我看到的內容中出現了很多,但從我的理解來看,Node並不是必需的。

我有以下的js文件

import * as ReactDOM from "react-dom"; 
import * as React from "react"; 
$(document).ready(function(){ 

    postToMiddleware(null, "account-manager.php", "testReact", function(result){ 
     alert(JSON.stringify(result)); 

     ReactDOM.render("<Names />", document.getElementById("names")); 
    }) 
}); 

class Names extends React.Component { 
    render() { 
     return (
      <p>Hello here is my react component</p> 
     ); 
    }; 
} 

我的HTML頁面包含的JavaScript文件之上,但隨後我在Chrome控制檯得到一個錯誤:

Uncaught SyntaxError: Unexpected token import 

它抱怨線是第一行:

import * as ReactDOM from "react-dom"; 

如果它有什麼區別 - 我假設沒有,我在Wamp下運行的Windows上運行,不過當它運行時它將運行在運行Apache的Linux機器上。

UPDATE 因爲我已經發現了進口替代,改變了兩個導入線如下:

var ReactDOM = require("/node_modules/react-dom/"); var React = require("/node_modules/react");

但現在在Chrome中我得到:

Uncaught SyntaxError: Unexpected token < 

哪個抱怨渲染返回線<p>Hello here is my react component</p>

+0

您不能在瀏覽器中使用類似於代碼的反應代碼,而無需翻譯它。堅持使用@tomasz建議使用預定義的所有設置的樣板應用程序 – baao

+0

未捕獲SyntaxError:意外的標記< - 您因爲需要傳輸JSX語法而出現此錯誤。 Transpiler會將它轉化爲反應物體。 – Tomasz

回答

2

您需要babel來處理諸如import語句和其他es6功能在現代瀏覽器中尚未提供的功能。如果您是新手,請考慮使用create-react-app-boilerplate,它可以爲您處理所有這些問題。

+0

感謝我看到了有關巴別塔,是爲reactjs的要求,我也改變了進口要求,這似乎給我一個不同的錯誤,是因爲巴別塔是必需的。它看起來像樣板應用程序使用我不想使用的節點,是這種情況? – Boardy

+0

它不是,但您可能需要它才能導入和導出具有該語法的模塊。 –

+0

https://facebook.github.io/react/docs/react-without-es6.html查看如何在沒有es6功能的情況下使用反應的反應文檔。如果您使用npm,那麼您已經在使用Node。 – Tomasz