yfa*_*ain 5 javascript jquery webpack
如何将jqueryandjquery.lazy与 webpack 捆绑在一起?- 每次我尝试这个时,都会出错。
我的浏览器调试控制台中出现以下错误:
TypeError: q is undefined
Run Code Online (Sandbox Code Playgroud)
其余的工作正常。也许你能看出我做错了什么。
我的package.json:
{
"name": "mrd-apple",
"version": "1i.0.0",
"description": "mrd Apple",
"main": "webpack.config.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"jquery": "^3.3.1",
"jquery-lazy": "^1.7.10",
"postcss-loader": "^3.0.0",
"webpack": "^4.29.3"
},
"devDependencies": {
"css-loader": "^2.1.0",
"style-loader": "^0.23.1",
"webpack-cli": "^3.2.3"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的 webpack.config.js
var webpack = require('webpack');
const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
var OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
module.exports = function(env) {
return {
entry: ['./src/js/index.js'],
output: {
path: __dirname + '/dist',
filename: 'bundle.js'
},
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
}),
new MiniCssExtractPlugin({
// Options similar to the same options in webpackOptions.output
// both options are optional
filename: "[name].css",
chunkFilename: "[id].css"
}),
new OptimizeCSSAssetsPlugin({
assetNameRegExp: /\.optimize\.css$/g,
cssProcessor: require('cssnano'),
cssProcessorPluginOptions: {
preset: ['default', { discardComments: { removeAll: true } }],
},
canPrint: true
})
],
module: {
rules: [
{
test: /\.css$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
options: {
// you can specify a publicPath here
// by default it use publicPath in webpackOptions.output
publicPath: '../'
}
},
"css-loader"
]
}
]
},
optimization: {
minimizer: [
new UglifyJsPlugin({
cache: true,
parallel: true,
sourceMap: true // set to true if you want JS source maps
}),
new OptimizeCSSAssetsPlugin({})
]
},
}
}
Run Code Online (Sandbox Code Playgroud)
index.js 的内容
// JS
// require('./jquery.lazy');
require('./lightslider');
require('./simple-lightbox');
require('./init');
// CSS
require('./../css/index.css');
Run Code Online (Sandbox Code Playgroud)
Ste*_*ark -1
你的问题在于你如何尝试使用 require.js
首先,您的 package.json 有问题:
webpack都是postcss-loaderdevDependency。uglifyjs-webpack-plugin, mini-css-extract-plugin,optimize-css-assets-webpack-plugin然而,问题在于您如何尝试包含这些库。
当将 require.js 与 package.json 和 webpack 一起使用时,您不会尝试 require .js 文件本身,而是可以或者require('npm-package-name'),更好的是,import NpmPackageName from 'npm-package-name'; 请参阅:依赖管理
如果您想通过页面上的 HTML 加载库,而不是在源代码中引用它,则可以使用 webpack externals 来实现。请参阅:Webpack 外部
作为参考,以下是我的文件版本:
包.json:
{
"name": "mrd-apple",
"version": "1.0.0",
"description": "mrd Apple",
"main": "webpack.config.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"jquery": "^3.3.1",
"jquery-lazy": "^1.7.10"
},
"devDependencies": {
"css-loader": "^2.1.0",
"mini-css-extract-plugin": "^0.5.0",
"optimize-css-assets-webpack-plugin": "^5.0.1",
"postcss-loader": "^3.0.0",
"style-loader": "^0.23.1",
"uglifyjs-webpack-plugin": "^2.1.2",
"webpack": "^4.29.3",
"webpack-cli": "^3.2.3"
}
}
Run Code Online (Sandbox Code Playgroud)
索引.js:
// require('jquery');
// require('jquery-lazy');
import $ from 'jquery';
import jqueryLazy from 'jquery-lazy';
Run Code Online (Sandbox Code Playgroud)
注意:我无法产生您提供的确切错误,但假设这是由于项目设置本身造成的。
| 归档时间: |
|
| 查看次数: |
1071 次 |
| 最近记录: |