ReferenceERROR:窗口未定义 - 此错误所指的Window在哪里?

时间:2018-05-28 15:52:46

标签: javascript reactjs

我在Ubuntu上使用react 16.3.2并希望将我的新反应应用程序与this software集成。

我已经发布了下面的代码,但是也为此创建了一个github存储库,以防你想要查看它并更多地考虑代码:

Github Repo

我的webpack.fly.config.js文件:

const path = require("path");
const webpack = require("webpack");
const bundlePath = path.resolve(__dirname, "dist/");

module.exports = {
  entry: "./src/index.js",
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        exclude: /(node_modules|bower_components)/,
        loader: 'babel-loader',
query: { presets: ['react']}
      },
      {
        test: /\.css$/,
        use: [ 'style-loader', 'css-loader' ]
      }
    ]
  },
  resolve: { extensions: ['*', '.js', '.jsx'] },
  output: {
    publicPath: bundlePath,
    filename: "bundle.js"
  },
  devServer: {
    contentBase: path.join(__dirname,'public'),
    port: 3000,
    publicPath: "http://localhost:3000/dist"
  },
  plugins: [ new webpack.HotModuleReplacementPlugin() ]
};

我认为这不是问题,因为当我运行fly server服务器开始运行时,但当我去刷新 localhost 网页时,我得到了错误如下:

  

ReferenceError:未定义窗口       在module.exports(bundle.js:5:41)       在bundle.js:728:10       在 ()       at /usr/local/lib/node_modules/@fly/fly/lib/default_context_store.js:47:30

我的index.js文件:

import React from 'react';
import ReactDOM from 'react-dom';

ReactDOM.render(
  <h1>Hello, world!</h1>,
  document.getElementById('root')
);

我还尝试了以下index.js文件:

    import React from 'react';
    import ReactDOM from 'react-dom';

fly.http.respondWith(function(request){
    ReactDOM.render(
      <h1>Hello, world!</h1>,
      document.getElementById('root')
    ) };

但仍然遇到同样的问题

我的index.html:

<!-- sourced from https://raw.githubusercontent.com/reactjs/reactjs.org/master/static/html/single-file-example.html -->
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>React Starter</title>
  </head>
  <body>
    <div id="root"></div>
    <noscript>
      You need to enable JavaScript to run this app.
    </noscript>
    <script src="../dist/bundle.js"></script>
  </body>
</html>

React和Webpack对我来说仍然是一个新手,所以我甚至不确定这个错误是什么或它意味着什么。

有人可以在这里说明一点,并指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

正如评论中指出的那样 - Fly.js运行服务器端代码,而不是客户端代码。

这意味着任何尝试使用window的代码都会失败,因为window仅在浏览器中定义 - 在节点window上运行时将是未定义的。