将Sails JS部署到Heroku时找不到图像

时间:2016-02-14 14:05:02

标签: javascript node.js heroku sails.js production-environment

我开发了一个Sails.js应用程序,它在本地工作。但是,当我将其部署到生产(Heroku)时,无法找到" / assets / images /" -folder中的图像(404)。

我知道有些任务会将" / assets" -folder中的文件传输到" .tmp / public" -folder,以便在应用程序被取消时可以访问。正在按预期加载.js-和.less-文件,但不加载图像。

如何确保" / assets / images" -folder也被转移到公共文件夹?

1 个答案:

答案 0 :(得分:2)

我有这个问题。 主要想法是在 .tmp 中创建上传文件夹。 并在公开文件夹中创建一个符号链接,以指向上传。 问题是Grunt每次提升应用程序时都会重写'.tmp / public'的所有内容。

因此我做了一个适当的Grunt任务,只创建了符号链接。

  1. sudo npm install grunt-contrib-symlink
  2. 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');
    };
    
  3. 最后将任务添加到 tasks / register / compileAssets.js

    module.exports = function (grunt) {
        grunt.registerTask('compileAssets', [
            'clean:dev',
            'jst:dev',
            'less:dev',
            'copy:dev',
            'coffee:dev',
            'symlink:dev'
        ]);
    };