我正在嘗試使用webpack安裝React。它是Rails項目的一部分。我正在關注this tutorial使用webpack安裝React時未定義
本教程建議從app/assets/javascripts(我還沒有完成 - 我仍然有jquery,jquery_ujs和d3)中刪除所有內容,將我的javascript放到一個單獨的目錄中,我的'源',然後在我的webpack配置中將app/assets/javascripts作爲'目標'目錄。我已經按照教程命名了我的源代碼目錄app/frontend/javascripts。
這是我的webpack.config.js文件看起來是這樣的:
'use strict';
var path = require('path');
var webpack = require('webpack');
module.exports = [{
name: 'chartComponent',
entry: './app/frontend/javascripts/entry.js',
output: {
path: path.join(__dirname, 'app', 'assets', 'javascripts'),
filename: 'bundle.js'
},
module: {
loaders: [
{
test: [/\.jsx$/],
loaders: ["jsx-loader?insertPragma=React.DOM&harmony"],
}
],
},
resolve: {
extensions: ['.webpack.js', '.web.js', '.js', '.jsx']
}
}];
我承認,我不知道所有這些設置做的,特別是「裝載機」的設置,但它是我的理解是「條目'應該指向我的webpack-javascript javascript的入口點,'output'應該爲編譯的javascript指定目錄和文件名。
我已經指定文件'app/frontend/javascripts/entry.js'作爲我的入口點。該文件是這樣的:
var React = require('react');
var ReactDOM = require('react-dom');
var Chart = require('react-d3-core').Chart;
var LineChart = require('react-d3-basic').LineChart;
的WebPack運行正常,並生成文件「應用程序/資產/ Java腳本/ bundle.js」,符合市場預期。然而,當我在我的Rails應用程序或我的Jasmine測試中包含軟件包文件時,全局變量React,ReactDOM等不可用。在控制檯,嘗試訪問反應過來,我得到:
Uncaught ReferenceError: React is not defined
我可以成功訪問全局變量d3
和$
分別由d3.js和jquery.js和設置,但我不管理這些通過的WebPack。
我想我一定是錯誤的期望在我的webpack條目文件中設置的變量可用。此外,似乎應該在包含文件中設置這樣的變量,而不是由我聲明 - 就像d3
和$
的設置沒有我聲明和設置它們的值。但是,當我看着bundle.js時,我確實看到了var React = ....
。 (在不止一個地方,我不明白,但無論如何)。所以我會認爲這個變量至少會被定義。
簡而言之,如何從我的應用程序和測試中訪問React(或包含在webpack中的任何其他庫)?任何幫助感謝!
我的猜測是反應沒有安裝。你有沒有在某個時候輸入'npm install --save react'? (或者''react'出現在你的package.json依賴關係中?) – Daniel
即使你沒有明確地調用'React',你也需要在你的jsx文件中從'react''導入React。 jsx會被編譯成react的api。 –
@Daniel我安裝了反應 - 當我運行'npm view react version'時,我得到了15.4.2。這也是我的package.json文件在「依賴關係」下的版本號 –