Node . js提供修改过的angular文件的旧版本(而不是新版本)



我正在使用MEAN堆栈编程一个项目。除了静态文件之外,其他都很好。

我在Node路由器文件中设置了一些规则来为静态文件服务。它是工作的,但是当我在一个Angular文件上做了一个改变,但是Node服务器返回给我的是这个文件的旧版本(在改变之前)。

为什么会发生这种情况?

我的服务器路由代码主要是这样的:

var app = express();
app.use("/node_modules/angular", express.static(__dirname + '/node_modules/angular'));
app.use("/scripts", express.static(__dirname + '/public/scripts'));
app.get('*', function(req, res){
    res.sendFile(path.join(__dirname + "/public/index.html"));
});

问题是express会缓存你的静态文件,因为它们真的不应该像Yevgen说的那样改变。这就是为什么你会经常在生产中看到像mainSOMENUMBER.css这样的东西。所以每次你更新一个资源文件,如main.css或在这种情况下app.js,你添加一个版本号,然后改变源。

长话短说,这是你的解决方案。

app.use("/node_modules/angular", 
express.static(__dirname + '/node_modules/angular'){maxage: 0});

我猜您只在开发过程中使用这种设置。理想情况下,静态文件不应该改变,新版本的文件应该反映在新的文件名中。默认情况下,express静态中间件在不重启服务器的情况下服务于文件的新版本。在您的情况下,我可以建议设置nodemon或forever来监视静态文件夹中的文件更改并触发服务器重启。

相关内容

  • 没有找到相关文章

最新更新