Chr*_*itz 64 javascript webpack vue.js webpack-dev-server
我正在尝试使用webpack-dev-server编译文件并启动一个开发Web服务器.
在我package.json的脚本属性设置为:
"scripts": {
"dev": "webpack-dev-server --hot --inline",
}
Run Code Online (Sandbox Code Playgroud)
所以--hot,--inline应该启用网络服务器和热重装(据我所知).
在我的webpack.config.js文件中,我设置了entry,output和devServer设置,并添加了一个加载器来查找.vue文件中的更改:
module.exports = {
entry: './src/index.js',
output: {
path: __dirname + '/public',
publicPath: '/public',
filename: 'bundle.js'
},
devtool: 'source-map',
devServer:{
contentBase: __dirname + '/public'
},
module:{
loaders:[
{ test: /\.vue$/, loader: 'vue'}
]
}
};
Run Code Online (Sandbox Code Playgroud)
所以通过这个设置,我运行npm run dev.webpack-dev-server启动,模块加载器测试工作(即当我保存任何.vue文件时,它会导致webpack重新编译),但是:
在第二个项目符号中,我可以看到这一点,因为在浏览器窗口中,vue占位符永远不会被替换,如果我打开javascript控制台,Vue实例永远不会创建或全局可用.
我错过了什么?
Chr*_*itz 59
有两件事导致了我的问题:
module.exports = {
entry: './src/index.js',
output: {
// For some reason, the `__dirname` was not evaluating and `/public` was
// trying to write files to a `public` folder at the root of my HD.
path: __dirname + '/public',
// Public path refers to the location from the _browser's_ perspective, so
// `/public' would be referring to `mydomain.com/public/` instead of just
// `mydomain.com`.
publicPath: '/public',
filename: 'bundle.js'
},
devtool: 'source-map',
devServer:{
// `contentBase` specifies what folder to server relative to the
// current directory. This technically isn't false since it's an absolute
// path, but the use of `__dirname` isn't necessary.
contentBase: __dirname + '/public'
},
module:{
loaders:[
{ test: /\.vue$/, loader: 'vue'}
]
}
};
Run Code Online (Sandbox Code Playgroud)
这是固定的webpack.config.js:
var path = require('path');
module.exports = {
entry: [
'./src/PlaceMapper/index.js'
],
output:{
filename: 'bundle.js',
path: path.resolve(__dirname, 'public/')
},
devtool: 'source-map',
devServer:{
contentBase: 'public'
},
module:{
loaders:[
{ test: /\.vue$/, loader: 'vue'}
]
}
};
Run Code Online (Sandbox Code Playgroud)
Sha*_*iri 17
正确的解决方案
告诉dev-server给观看由所服务的文件devServer.watchContentBase选项。
默认情况下它是禁用的。
启用后,文件更改将触发整页重新加载。
例子:
module.exports = {
//...
devServer: {
// ...
watchContentBase: true
}
};
Run Code Online (Sandbox Code Playgroud)
Ser*_*nci 14
经过长时间的搜索,我找到了我的问题的解决方案,在我的情况下,输出路径未正确配置.
这个配置解决了我的问题:
const path = require('path');
module.exports = {
"entry": ['./app/index.js'],
"output": {
path: path.join(__dirname, 'build'),
publicPath: "/build/",
"filename": "bundle.js"
}....
Run Code Online (Sandbox Code Playgroud)
cur*_*onk 10
我的开发服务器也有问题,它停止工作。以前它有效,然后我添加了大量额外内容以获得生产版本。然后当我回到 devserver 时,它不再起作用了。
进行了大量的侦查——最终从 git 中的先前提交开始,然后一一重新引入更改,直到我弄清楚为止。
原来这是我对 所做的更改package.json,特别是这一行:
"browserslist": "> 1%, not dead",
Run Code Online (Sandbox Code Playgroud)
这对于指导postcss目标浏览器很有用。
但是,它会停止 devserver 工作。解决方法是将其添加到 dev webpack 配置中:
target: 'web',
Run Code Online (Sandbox Code Playgroud)
我在这里找到了解决方案:https : //github.com/webpack/webpack-dev-server/issues/2812
希望可以为某人节省几个小时的麻烦!
不知何故,就我而言,删除“--hot”使其工作。所以,我删除了hot: true
webpack.dev.js
module.exports = merge(common, {
mode: 'development',
devtool: 'inline-source-map',
devServer: {
publicPath: '/js/',
contentBase: path.resolve(__dirname, 'docs'),
watchContentBase: true,
}
});
Run Code Online (Sandbox Code Playgroud)
webpack.common.js
output: {
path: path.resolve(__dirname, 'docs/js'),
filename: '[name].min.js',
library: ['[name]']
},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49958 次 |
| 最近记录: |