所以我已经完成了以下工作,似乎解决了很多使jQuery和Laravel Mix(4.0)绊倒的问题:
.autoload({
'jquery': ['$', 'window.jQuery', 'jQuery'],
'clipboard': ['ClipboardJS'],
'popper.js': ['Popper']
});
这使我不再遇到$ is not defined
错误。
但是现在,如果我管理日志$
或jQuery
或window.jQuery
,则不再是is not defined
而是undefined
。
我该如何解决?变量已正确附加到窗口,但它们为空...
我认为我加载模块错误,或者对package.json
和webpack.mix.js
的交互方式感到困惑。每个文件的完整文件如下:
package.json:
{
"private": true,
"scripts": {
"dev": "npm run development",
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "npm run development -- --watch",
"watch-poll": "npm run watch -- --watch-poll",
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"devDependencies": {},
"dependencies": {
"@fortawesome/fontawesome-free": "^5.6.3",
"bootstrap": "^4.2.1",
"bootstrap-datepicker": "^1.8.0",
"clipboard": "^2.0.4",
"inputmask": "^4.0.6",
"jquery": "^3.2",
"jquery-editable-select": "^2.2.5",
"jquery-lazy": "^1.7.10",
"laravel-mix": "4.0",
"popper.js": "^1.12.9"
}
}
webpack.mix.js:
mix
.js([
/*
|--------------------------------------------------------------------------
| Modules
|--------------------------------------------------------------------------
*/
'node_modules/jquery/dist/jquery.min.js',
'node_modules/popper.js/dist/umd/popper.min.js',
'node_modules/bootstrap/dist/js/bootstrap.min.js',
'node_modules/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js',
'node_modules/jquery-lazy/jquery.lazy.min.js',
'node_modules/jquery-lazy/jquery.lazy.plugins.js',
'resources/modules/jRange/jquery.range-min.js',
'node_modules/inputmask/dist/jquery.inputmask.bundle.js',
'node_modules/clipboard/dist/clipboard.min.js',
'resources/js/app.js'
], 'public/js/app.js')
.autoload({
'jquery': ['$', 'window.jQuery', 'jQuery'],
'clipboard': ['ClipboardJS'],
'popper.js': ['Popper']
});
如果您有任何建议,请告诉我。我尝试使用npm run dev
和npm run production
并得到相同的错误undefined
输出。
答案 0 :(得分:0)
因此,使用开箱即用的混合方式来获取jQuery,我这样做:
let mix = require('laravel-mix');
/*
|--------------------------------------------------------------------------
| Mix Asset Management
|--------------------------------------------------------------------------
|
| Mix provides a clean, fluent API for defining some Webpack build steps
| for your Laravel application. By default, we are compiling the Sass
| file for the application as well as bundling up all the JS files.
|
*/
mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css')
.version();
然后在resources / assets / js / bootstrap.js中:
try {
window.$ = window.jQuery = require('jquery');
require('bootstrap');
} catch (e) {}
Webpack可以做其他所有事情。
是的,npm正在安装jQuery,这是我的package.json:
{
"private": true,
"scripts": {
"dev": "npm run development",
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch-poll": "npm run watch -- --watch-poll",
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"devDependencies": {
"axios": "^0.16.2",
"bootstrap": "^4.1",
"cross-env": "^5.1.4",
"jquery": "^3.3.1",
"laravel-mix": "^1.7.2",
"lodash": "^4.17.5",
"vue": "^2.5.16"
},
"dependencies": {
"@fortawesome/fontawesome": "^1.1.5",
"@fortawesome/fontawesome-free-webfonts": "^1.0.9",
"ar.js": "^1.4.10",
"chess.js": "^0.10.2",
"chessboardjs": "0.0.1",
"font-awesome": "^4.7.0",
"laravel-echo": "^1.4.0",
"popper.js": "^1.14.3",
"socket.io-client": "^2.1.1",
"typeface-raleway": "0.0.54"
}
}