我开发了一个Sails.js应用程序,它在本地工作。但是,当我将其部署到生产(Heroku)时,无法找到" / assets / images /" -folder中的图像(404)。
我知道有些任务会将" / assets" -folder中的文件传输到" .tmp / public" -folder,以便在应用程序被取消时可以访问。正在按预期加载.js-和.less-文件,但不加载图像。
如何确保" / assets / images" -folder也被转移到公共文件夹?
答案 0 :(得分:2)
我有这个问题。 主要想法是在 .tmp 中创建上传文件夹。 并在公开文件夹中创建一个符号链接,以指向上传。 问题是Grunt每次提升应用程序时都会重写'.tmp / public'的所有内容。
因此我做了一个适当的Grunt任务,只创建了符号链接。
sudo npm install grunt-contrib-symlink
在 tasks / config 中创建Grunt任务。并将其命名为 symlink.js 。
module.exports = function(grunt) {
grunt.config.set('symlink', {
dev: {
src: '.tmp/uploads/**',
dest: '.tmp/public/uploads/'
}
});
grunt.loadNpmTasks('grunt-contrib-symlink');
};
最后将任务添加到 tasks / register / compileAssets.js 。
module.exports = function (grunt) {
grunt.registerTask('compileAssets', [
'clean:dev',
'jst:dev',
'less:dev',
'copy:dev',
'coffee:dev',
'symlink:dev'
]);
};