我在学习使用webpack。
npm install jquery之后,
在入口js第一行输入
var $ = require("jquery");
结果正确
改成以下代码后
import $ from "jquery";
于是在这一行出错。
ERROR in ./main.js
Module parse failed: /Users/Idministrator/Programming/WebPack/hello/main.js Line 1: Unexpected token
You may need an appropriate loader to handle this file type.
| import $ from "jquery";
webpack.config.js中,已经在resolve中通过root参数将node_modules设置成了搜索目录。
另外还想问,require("jquery")就是导入jquery吧。使用script来直接导入jquery后,就直接能使用$了,为什么这里要
var $ = require("jquery");
这没有重复定义$了嘛?还是说是存在作用域之类的问题。
希望能不吝赐教,谢谢~
webpack.config.js
module.exports = {
entry: "./main",
output:{
path:"./build" ,
filename:"./[name].bundle.js"
},
resolve:{
root: [process.cwd() + '/src', process.cwd() + '/node_modules'],
alias: {},
extensions: ["",".js"]
},
module:{
loaders:[
{ test: /\.less$/, loader: "style-loader!css-loader!less-loader"},
{ test: /\.css$/, loader: "style-loader!css-loader"},
{ test:/\.(png|jpg)$/, loader: "url-loader?limit=8192"}
]
}
}
首先,报错信息里:
这说的是 Unexpected token,语法错误。考虑到 import 是 ECMAScript 6 的东西,如果你想用 ECMAScript 6 的 import 语法的话,你需要打开 WebPack 相应的支持,参考这篇文章: http://www.2ality.com/2015/04/webpack-es6.html 。
其次,为什么要手动给 $ 赋值呢?我们可以来看一下 jQuery 的这部分源代码:
如果这是一个 CommonJS 及类似环境,而且 global 里有 document,那么他会将 jQuery 对象返回进 module.exports,并且这时候 noGlobal == true,也就是不会往 global 里注入 jQuery。