【问题标题】:"jQuery requires a window with a document" webpack 2 error“jQuery 需要一个带有文档的窗口”webpack 2 错误
【发布时间】:2017-08-29 18:48:21
【问题描述】:

我将我的 node 应用程序与 webpack2 捆绑在一起,我使用 JQuery 和 jam 作为我的前端。在运行我的应用程序时出现此错误,

node_modules\jquery\dist\jquery.js:31
throw new Error( "jQuery requires a window with a document" );
^
Error: jQuery requires a window with a document

我用过

var $ = require("jquery");

在所有前端 javascript 文件中。

我试过这些solutions

这个到,

    {
        test: require.resolve('jquery'),
        loader: 'expose?$!expose?jQuery'
    },

我该如何处理这个问题?

webpack.config.js

var path = require('path');
var nodeExternals = require('webpack-node-externals');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');

module.exports = {
    target: 'node',
    entry: {
        app: ['babel-polyfill', './bin/run.js'],
    },
    output: {
        path: './build',
        filename: '[name].min.js'
    },
    externals: [nodeExternals()],
    plugins: [
        new HtmlWebpackPlugin()
    ],
    module: {
        rules: [
            {
                test: /\.js$/,
                loader: 'babel-loader',
                exclude: /lodash/
            },
            {
                test: /\.jade$/,
                loader: 'jade-loader'
            },
            {
                test: /\.css$/,
                use: [
                    {loader: 'style-loader'},
                    {
                        loader: 'css-loader',
                        options: {
                            modules: true
                        }
                    }
                ]
            },
        ],
        noParse: [/ws/]
    }
};

【问题讨论】:

  • 感谢您的回复,我通过npm安装了jquery,并使用app.use(express.static("node_modules/jquery/dist"));将jquery传递给客户端,在从webpack收到一些错误后,我使用了这个声明。如果我删除了这个我会收到这个错误$(function () { ^ ReferenceError: $ is not defined @danjonescidtrix

标签: javascript jquery node.js webpack webpack-2


【解决方案1】:

jQuery 只能在前端(浏览器)上使用。

您似乎正试图在 Node 本身中使用它来引用回 $

需要注意的是,jQuery 不支持服务器端渲染。

-> var $ = require("jquery"); 不起作用..

【讨论】:

  • 感谢您的回复,我通过npm安装了jquery,并使用app.use(express.static("node_modules/jquery/dist"));将jquery传递给客户端,在从webpack收到一些错误后,我使用了这个声明。如果我删除了这个我会收到这个错误$(function () { ^ ReferenceError: $ is not defined @0x616f
  • 您应该将它作为脚本标签 src <script src="/jquery/location/jquery.min.js"></script> 包含在浏览器呈现的 HTML 代码中(在 HEAD 中)
  • 是的,我像这样包含在我的玉文件中,script(src='/jquery.js', type='text/javascript' , crossorigin="anonymous")@0x616f
  • 如果您“查看源代码”并打开该“/jquery.js”文件,它是否正确打开?此外,它需要在任何 $(function() {) 东西之前被拉入
猜你喜欢
  • 1970-01-01
  • 2014-02-16
  • 1970-01-01
  • 2017-10-22
  • 2013-12-21
  • 2019-10-21
  • 2020-08-19
  • 2018-07-05
  • 2017-07-30
相关资源
最近更新 更多