Reactjs jQuery需要一个在webpack中包含文档的窗口
我正在使用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 这是我的网页配置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
"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吗?