Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs jQuery需要一个在webpack中包含文档的窗口_Reactjs_Webpack_Reactjs.net - Fatal编程技术网

Reactjs jQuery需要一个在webpack中包含文档的窗口

Reactjs jQuery需要一个在webpack中包含文档的窗口,reactjs,webpack,reactjs.net,Reactjs,Webpack,Reactjs.net,我正在使用ReactJS.net(服务器端渲染),当我在Webpack中使用jquery时,我得到了一个错误 这是我的错误 将“Components.ToDoListSkeleton”呈现到时出错 “react_0LmYYfSk30qdrKJQe4McUQ”:错误:jQuery需要一个带有 文件 在module.exports(脚本文档[5]:51:87)->module.exports=global.Document?工厂(全局,true):函数(w){if(!w.Document){thro

我正在使用ReactJS.net(服务器端渲染),当我在Webpack中使用jquery时,我得到了一个错误 这是我的错误

将“Components.ToDoListSkeleton”呈现到时出错 “react_0LmYYfSk30qdrKJQe4McUQ”:错误:jQuery需要一个带有 文件 在module.exports(脚本文档[5]:51:87)->module.exports=global.Document?工厂(全局,true):函数(w){if(!w.Document){throw 新错误(“jQuery需要带有文档的窗口”);}返回 工厂(w);};}else{factory(global);}//如果窗口未打开,则传递此消息 确定了吗 在新的ToDoListSkeleton中(脚本文档[5]:26:903) 在ReactCompositeComponentMixin.\u constructComponentWithoutOwner(脚本文档[2]:8271:28) 在ReactCompositeComponentMixin.\u constructComponent(脚本文档[2]:8253:22) 在ReactCompositeComponentMixin.mountComponent(脚本文档[2]:8172:22) 在ReactReconciler.mountComponent(脚本文档[2]:1977:36) 在脚本文件[2]:19549:37中 在Mixin.perform(脚本文档[2]:3788:21) 在renderToStringImpl(脚本文档[2]:19544:25) 在RenderString(脚本文档[2]:19574:11) 在脚本文档[7][temp]:1:16行:19549列:37

这是我的网页配置

"use strict";

var path = require('path');
var WebpackNotifierPlugin = require('webpack-notifier');
var webpack = require("webpack");
module.exports = {
    context: path.join(__dirname, 'Content'),
    entry: {
        server: './server'
    },
    output: {
        path: path.join(__dirname, 'build'),
        filename: '[name].bundle.js'
    },
    module: {
        loaders: [
            // Transform JSX in .jsx files
            { test: /\.jsx$/, loader: 'jsx-loader?harmony' },
            { test: require.resolve("jquery"), loader: "expose?$!expose?jQuery" }
        ]
    },
    resolve: {
        // Allow require('./blah') to require blah.jsx
        extensions: ['', '.js', '.jsx']
    },
    externals: {
        //// Use external version of React (from CDN for client-side, or
        //// bundled with ReactJS.NET for server-side)
        react: "React"
    },
    plugins: [
      new WebpackNotifierPlugin(),
      new webpack.ProvidePlugin({
          $: "jquery", 
          jQuery: "jquery", 
          "window.jQuery": "jquery",    
      })
    ]
};

非常感谢您提供的任何帮助或建议。

jQuery仅设计用于浏览器,不支持服务器端渲染。您需要从任何要在服务器端使用的代码中删除jQuery。

谢谢您的回复,但您能告诉我如何通过webpack捆绑lib吗?我的情况是,我有许多外部lib,如bootrap、jQuery、矩js,我不想将其放在脚本标记中,我只想“require(lib name)”我的外部LIB,如果我需要的话。谢谢:这不是真的。有一个
jsdom
包可用于服务器端渲染。@maxple-当然可以,但是如果要进行服务器端渲染,您实际需要jQuery的哪些部分?jsdom是一个非常严重的依赖项,您最好重写代码,使其不与jQuery耦合。需要jsdom,以便他们可以使用jQuery在服务器上操作文档。我不太清楚你所说的严重依赖是什么意思。你说它不应该绑定到jquery是什么意思?喜欢写简单的js吗?