【问题标题】:How to configure and use jQuery with webpack如何通过 webpack 配置和使用 jQuery
【发布时间】:2017-02-23 11:04:45
【问题描述】:

我有一个非常简单的项目来测试使用 webpack 运行 jQuery 函数。但是我在捆绑步骤中遇到了错误。以下是错误:

ERROR in ./~/jQuery/lib/node-jquery.js
Module not found: Error: Cannot resolve module 'jsdom' in /home/mypc/IdeaProject/OpenDimSum/frontend/node_modules/jQuery/lib
 @ ./~/jQuery/lib/node-jquery.js 5:13-29

ERROR in ./~/jQuery/lib/node-jquery.js
Module not found: Error: Cannot resolve module 'xmlhttprequest' in /home/mypc/IdeaProject/OpenDimSum/frontend/node_modules/jQuery/lib
 @ ./~/jQuery/lib/node-jquery.js 8:28-53

ERROR in ./~/jQuery/lib/node-jquery.js
Module not found: Error: Cannot resolve module 'location' in /home/mypc/IdeaProject/OpenDimSum/frontend/node_modules/jQuery/lib
 @ ./~/jQuery/lib/node-jquery.js 13:24-43

ERROR in ./~/jQuery/lib/node-jquery.js
Module not found: Error: Cannot resolve module 'navigator' in /home/mypc/IdeaProject/OpenDimSum/frontend/node_modules/jQuery/lib
 @ ./~/jQuery/lib/node-jquery.js 17:25-45

这是我的配置文件:
包.json

{
  "name": "frontend",
  "version": "1.0.0",
  "description": "",
  "main": "index.jsx",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "babel-core": "^6.17.0",
    "babel-loader": "^6.2.5",
    "babel-preset-es2015": "^6.16.0",
    "babel-preset-react": "^6.16.0",
    "jquery": "^2.2.2",
    "react": "file:node_modules/react",
    "react-dom": "file:node_modules/react-dom",
    "webpack": "^1.13.2",
    "webpack-dev-server": "^1.16.2"
  }
}

webpack.config.js

var webpack = require('webpack')
var path = require('path')

var BUILD_DIR = path.resolve(__dirname, 'src/client/public');
var APP_DIR = path.resolve(__dirname, 'src/client/app');

var config = {
  entry: APP_DIR + '/index.jsx',
  output: {
    path: BUILD_DIR,
    filename: 'bundle.js',
    publicPath: 'public',
  },
  module: {
    loaders: [
      {

        test: /\.jsx?/,
        include: APP_DIR,
        loader: 'babel'
      },
      {
        test: /\.css/,
        include: APP_DIR,
      }
    ]
  },

};

module.exports = config;

index.jsx:

import React from 'react'
import {render} from 'react-dom'
import $ from 'jQuery'


(function () {

    $(document).ready(function() {
        console.log("It works!");
    });

})();

如果我安装提到的模块(jsdom、xmlhttprequest、..),错误将被很长的错误替换。

【问题讨论】:

标签: javascript jquery npm webpack


【解决方案1】:

您可以使用webpack.ProvidePlugin 将jQuery 解析为全局标识符。当您使用ProvidePlugin 时,您不想将jQuery 导入到模块中,因为它可以作为全局变量使用。

类似

plugins: [
    new webpack.ProvidePlugin({
        $: "jquery",
        jQuery: "jquery"
    })
]

【讨论】:

  • 是否可以在其中添加第三条“行”,即jquery: "jquery"?我收到错误Module not found: Error: Can't resolve 'jquery',我想知道是不是因为只指定了$jQuery,而不是jquery 和小写q
猜你喜欢
  • 1970-01-01
  • 2019-05-13
  • 1970-01-01
  • 2018-05-23
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2017-05-26
相关资源
最近更新 更多