2017-07-18 4 views
0

ウェブパック側からのエラーと思われるエラーが発生しました。ここでは、次のとおりです。ReferenceError:evalでグローバルが定義されていません

index.js:9 Uncaught ReferenceError: global is not defined 
    at eval (index.js:9) 
    at Object.<anonymous> (bundle.js:2548) 
    at __webpack_require__ (bundle.js:622) 
    at fn (bundle.js:48) 
    at eval (client:1) 
    at Object.<anonymous> (bundle.js:2541) 
    at __webpack_require__ (bundle.js:622) 
    at bundle.js:668 
    at bundle.js:671 

私のWebPACKは次のとおりです。

import webpack from 'webpack'; 
import merge from 'webpack-merge'; 
import path from 'path'; 
import isDev from 'isdev'; 
import { Dir } from './src/utils'; 

const TARGET = process.env.npm_lifecycle_event; 

let Config = { 
    entry: [ 
    'babel-polyfill', 
    'react-hot-loader/patch', 
    path.join(Dir.src, 'client.js'), 
    ], 
    output: { 
    path: path.join(Dir.public, 'build'), 
    filename: 'bundle.js', 
    }, 
    target: 'node', 
    resolve: { 
    modules: [Dir.src, 'node_modules'], 
    extensions: ['*', '.js', '.jsx', '.json'], 
    }, 
    module: { 
    rules: [ 
     { 
     test: /\.js?$/, 
     enforce: 'pre', 
     loader: 'eslint-loader', 
     exclude: /node_modules/, 
     include: Dir.src, 
     }, 
     { 
     test: /\.js?$/, 
     loader: 'babel-loader', 
     exclude: /node_modules/, 
     }, 
    ], 
    }, 
    plugins: [ 
    new webpack.optimize.OccurrenceOrderPlugin(), 
    new webpack.DefinePlugin({ 
     'process.env': { 
     NODE_ENV: JSON.stringify(process.env.NODE_ENV), 
     }, 
    }), 
    ], 
}; 

if (TARGET === 'build:prod' && !isDev) { 
    Config = merge(Config, { 
    bail: true, 
    devtool: 'source-map', 
    output: { publicPath: '/build/' }, 
    plugins: [ 
     new webpack.optimize.DedupePlugin(), 
     new webpack.optimize.UglifyJsPlugin({ 
     comments: false, 
     dropDebugger: true, 
     dropConsole: true, 
     compressor: { 
      warnings: false, 
     }, 
     }), 
    ], 
    }); 
} 

if (TARGET === 'server:dev' && isDev) { 
    Config = merge(Config, { 
    devtool: 'eval', 
    entry: ['webpack-hot-middleware/client'], 
    plugins: [ 
     new webpack.HotModuleReplacementPlugin(), 
     new webpack.NoEmitOnErrorsPlugin(), 
    ], 
    }); 
} 

const WebpackConfig = Config; 
export default WebpackConfig; 

このエラーは、私はReduxのは、サーバー側のレンダリングのために示唆するものを追加一度現れ始めました。ですから、ウィンドウの.__ PRELOADED_STATE__。/src/utils/store.jsの店舗の水分補給を使用しています。index.ejsこれはクライアントにレンダリングされるファイルです。私は私の研究や臨床試験で解決策を見つけていない -

{ 
    "presets": ["es2015", "react", "stage-0"], 
    "env": { 
     "development": { 
      "plugins": ["react-hot-loader/babel"], 
     }, 
    }, 
    "plugins": [ 
     "babel-root-import" 
    ], 
} 

ホープ誰もこれを支援することができます:何かがあれば

これは私の.babelrcもあります。ありがとうございました!

答えて

0

この問題は、あなたのwebpack.config.jsにあるtarget: 'node'の問題です。これは基本的に、Webpackはバンドルがノードのような環境で実行されていることを想定しています。ここではglobalrequireのようなグローバルが環境によって提供されています。特に指定がない限り、Webpackはブラウザ環境を想定し、globalwindowに書き換える。設定によってこの書き換えが無効になります。

設定からtarget: 'node'を削除するか、コンフィグオブジェクトにnode: {global: true}を追加して、global書き換えを明示的に有効にすることができます。

+0

@Stefanに感謝します。そうです。私がそれを置く唯一の理由は、「fsを解決できません」という問題があり、提示された解決策が 'target: 'node''だったからです:https://github.com/webpack-contrib/css-loader//447 ...そして、私は 'グローバルに定義されていない'を得ましたので、私はある種のエラーのループに陥っています。 – adambargh

+0

症状は、ポップアップするすべてを模倣するwebpackを取得する必要があります。たとえば、 'fs':' node:{fs: 'empty'} 'のようにします。それがあなたがしようとしていることに対する正しい解決策かどうかは分かりません。 –

+0

つまり、 'webpack.config.js'の' node:{global:true、fs: 'empty'} 'です。 –

関連する問題