2

Я разработал приложение Sails.js, которое работает как ожидалось локально. Однако, когда я развертываю его для производства (Heroku), изображения в папке «/ assets/images /» не могут быть найдены (404).Изображения не найдены, если Sailing JS для Heroku

Я знаю, что есть некоторые задачи, которые переносят файлы в папке «/ assets» в «.tmp/public» -палку, чтобы быть доступной, когда приложение отменяется. Файлы .js- и .less загружаются, как ожидалось, но не изображения.

Как я могу убедиться, что папка «/ assets/images» также переносится в общую папку?

+0

Вы не можете. Насколько я помню, Heroku не предоставляет такого рода услуги. U нужно использовать стороннюю услугу, такую ​​как Amazon s2 или Dropbox. –

+0

Sails использует grunt-задачи для компиляции статических ресурсов (js/css/templates) и делает их доступными для приложения. Вероятно, вам нужно добавить задачу для копирования изображений в каталог .tmp. – elssar

ответ

1

У меня был этот выпуск. Основная идея состоит в том, чтобы сделать загружает папку в .tmp. И сделать символическую ссылку в общедоступной папка, ведущая к загружает. Проблема в том, что Grunt переписывает весь контент «.tmp/public» каждый раз, когда мы поднимаем приложение.

Таким образом, я сделал правильную задачу Grunt, которая просто создает символическую ссылку.

  1. sudo npm install grunt-contrib-symlink
  2. Создать задачу Grunt в задач/конфигурации. И назовите его smth, как symlink.js.

    module.exports = function(grunt) { 
    
        grunt.config.set('symlink', { 
         dev: { 
    
           src: '.tmp/uploads/**', 
           dest: '.tmp/public/uploads/' 
    
         } 
        }); 
    
        grunt.loadNpmTasks('grunt-contrib-symlink'); 
    }; 
    
  3. И, наконец, добавить задачу задач/регистр/compileAssets.js.

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