Javascript 由于附加了DevTools,已取消超时计时器终止服务辅助进程
操作系统:Windows 10 ProJavascript 由于附加了DevTools,已取消超时计时器终止服务辅助进程,javascript,reactjs,service-worker,sw-precache,Javascript,Reactjs,Service Worker,Sw Precache,操作系统:Windows 10 Pro 网页:1.14.0 sw precache网页包插件:0.9.1 西南预科:5.0.0 因此,我启动了我的站点,并在几分钟内不主动执行任何操作,然后在devTools中生成上面指定的错误消息。如果执行某些过程,则不会出现错误 我的代码如下: webpack.config.prod.js var path=require('path'); var webpack=require('webpack'); var swprecacheebpackplugin=
网页:1.14.0
sw precache网页包插件:0.9.1
西南预科:5.0.0 因此,我启动了我的站点,并在几分钟内不主动执行任何操作,然后在devTools中生成上面指定的错误消息。如果执行某些过程,则不会出现错误 我的代码如下: webpack.config.prod.js
var path=require('path');
var webpack=require('webpack');
var swprecacheebpackplugin=require('sw-precache-webpack-plugin');
module.exports={
devtool:'源映射',
上下文:_dirname,
条目:{
main:path.resolve(uuu dirname,'./client/app'),
},
输出:{
path:path.join(uu dirname,“/public”),
文件名:“bundle.js”,
publicPath:“/public/”
},
插件:[
新建webpack.optimize.OccurenceOrderPlugin(),
新的webpack.DefinePlugin({
“process.env”:{
‘NODE_ENV’:“‘production’”
}
}),
新建webpack.optimize.UglifyJsPlugin({
压缩机:{
警告:错误
}
}),
新SWP包装包装盒(
{
cacheId:‘火烈鸟城’,
文件名:“my service worker.js”,
stripPrefix:path.join(\uu dirname,'public')。replace(/\\\/g,“/”),
maximumFileSizeToCacheInBytes:6194304,
缩小:是的,
运行时缓存:[{
处理程序:“cacheFirst”,
urlPattern:/[.]mp3$/,,
}],
}
),
],
模块:{
装载机:[
//js
{
测试:/\.js$/,,
装载机:[“巴别塔”],
包括:path.join(uu dirname,'client')
},
//CSS
{
测试:/\.styl$/,,
包括:path.join(uu dirname,'client'),
加载器:“样式加载器!css加载器!手写笔加载器”
}
]
}
};代码>通常情况下,作为一种优化,空闲的服务人员会被主动杀死,以防止代码在不需要时在后台运行
Chrome会采取步骤检测DevTools是否打开,当打开时,不会自动杀死服务人员。假设开发人员正在使用DevTools,他们可能正在调试或检查服务人员的行为,杀死服务人员会让开发人员感到沮丧
延长服务工作者的生命周期过去是无声的,但在过去的几个Chrome版本中,消息
超时计时器终止的服务工作进程已取消,因为
已附加DevTools
记录到控制台,以让开发人员知道服务工作人员通常会被杀死,但杀死它的作业由于DevTools处于打开状态而被取消
你可能会问,这有什么区别?为什么要让开发人员知道没有发生什么事情呢
指出这一点的动机是让开发人员知道,在这个调试环境中,实际用户将在生产中遇到的事情(即,服务人员被反复杀死/重新启动)不会发生。如果开发人员编写了错误的服务人员代码,这会产生不同。编写假定全局状态将始终保持的代码很容易,并且在DevTools打开的情况下运行(因为服务工作人员从未被杀死),然后在生产环境中无法工作。
var path=require('path');
var webpack=require('webpack');
var swprecacheebpackplugin=require('sw-precache-webpack-plugin');
module.exports={
devtool:'源映射',
上下文:_dirname,
条目:{
main:path.resolve(uuu dirname,'./client/app'),
},
输出:{
path:path.join(uu dirname,“/public”),
文件名:“bundle.js”,
publicPath:“/public/”
},
插件:[
新建webpack.optimize.OccurenceOrderPlugin(),
新的webpack.DefinePlugin({
“process.env”:{
‘NODE_ENV’:“‘production’”
}
}),
新建webpack.optimize.UglifyJsPlugin({
压缩机:{
警告:错误
}
}),
新SWP包装包装盒(
{
cacheId:‘火烈鸟城’,
文件名:“my service worker.js”,
stripPrefix:path.join(\uu dirname,'public')。replace(/\\\/g,“/”),
maximumFileSizeToCacheInBytes:6194304,
缩小:是的,
运行时缓存:[{
处理程序:“cacheFirst”,
urlPattern:/[.]mp3$/,,
}],
}
),
],
模块:{
装载机:[
//js
{
测试:/\.js$/,,
装载机:[“巴别塔”],
包括:path.join(uu dirname,'client')
},
//CSS
{
测试:/\.styl$/,,
包括:path.join(uu dirname,'client'),
加载器:“样式加载器!css加载器!手写笔加载器”
}
]
}
};代码>非常好,他们添加了这个消息:-)现在我找到了这个主题,还有另一个主题:-这将节省我很多时间,可能是几天:“一般来说,任何事件处理程序之外的代码,在服务工作者全局范围的“顶级”中,将在每次启动服务工作者线程(/进程)时运行…”,虽然您的代码可能包含问题的解决方案,但如果您包含代码的描述(并包含一些注释)并突出显示重要的代码片段以帮助其他人理解您的答案,则会很有帮助。