【发布时间】:2017-11-16 15:29:32
【问题描述】:
我的 Sails 应用程序不会更新生产中的 javascript 文件。 我正在开始生产:
NODE_ENV=production 永远启动 app.js
但是当我打开网站时,我没有看到任何变化。即使我重新启动网站。更改仅在使用 ctrl+F5 硬刷新或手动清除缓存后应用。
但在本地它可以工作。
这可能与缓存有关,浏览器不会强制更新/清除缓存。如何解决?
我的任务/config/sails-linker.js:
grunt.config.set('sails-linker', {
devJs: {
options: {
startTag: '<!--SCRIPTS-->',
endTag: '<!--SCRIPTS END-->',
fileTmpl: '<script src="%s?v='+ new Date().getTime() +'"></script>',
appRoot: '.tmp/public'
},
files: {
'.tmp/public/**/*.html': require('../pipeline').jsFilesToInject,
'views/**/*.html': require('../pipeline').jsFilesToInject,
'views/**/*.ejs': require('../pipeline').jsFilesToInject
}
},
因为我没有在生产中使用sails lift,所以我将 grunt 默认更改为:
/tasks/register/default.js
module.exports = function (grunt) {
grunt.registerTask('default', [
'compileAssets',
'linkAssetsBuildProd',
'watch',
'concat',
'uglify',
'cssmin',
'sails-linker:prodJs',
'sails-linker:prodJsJade',
]);
};
我不知道下一步该去哪里。
【问题讨论】:
-
我建议您改用 pm2。它更好更完整!其次,生产模式的 grunt 任务不会监视 JS/CSS 文件中的变化,因为它会在生产之前缩小所有内容。要查看代码/样式中的实时更改,您应该正常使用
sails lift。您的任务管道是错误的,因为 Grunt 在观看之前正在压缩/丑化...... -
谢谢。我改变了咕噜声并更新了问题。这并没有帮助我实现我想要的 - 如果没有硬刷新,我的更改仍然不适用。
-
我也安装并使用了 pm2 - 仍然没有任何变化。
-
你能说清楚一点吗? “必需的硬重新加载”是您唯一关心的问题,还是有其他问题?帆是否没有以其他方式更新(无论是否在产品中,是否是本地机器)?我在 grunt 和 prod 模式方面遇到了困难,所以一旦我遇到你的问题,我可能会有一些见解。
-
嗯。就像:当我更新我的服务器时,客户端没有得到更新的资产。如果我单击 f5,即使 10 次后也没有任何变化。如果我点击 ctrl+f5,只有这样我才能看到我更新的资产。在本地,我在简单的 f5 之后更新了资产。到目前为止,我尝试了许多不同的方法,但都没有成功。我不知道根在哪里..为什么缓存没有在生产中更新..