【问题标题】:Images not found when deploying Sails JS to Heroku将 Sails JS 部署到 Heroku 时找不到图像
【发布时间】:2016-05-25 09:04:41
【问题描述】:

我开发了一个 Sails.js 应用程序,它在本地按预期工作。但是,当我将其部署到生产(Heroku)时,找不到“/assets/images/”文件夹中的图像(404)。

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

如何确保“/assets/images”文件夹也被转移到公共文件夹?

【问题讨论】:

  • 你不能。据我所知,Heroku 不提供这种服务。您需要使用第三方服务,例如 Amazon s2 或 Dropbox。
  • Sails 使用 grunt 任务来编译静态资产 (js/css/templates) 并使它们可用于应用程序。您可能需要添加一个任务来将图像复制到 .tmp 目录

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


【解决方案1】:

我遇到了这个问题。 主要思想是在 .tmp 中创建一个 uploads 文件夹。 并在 public 文件夹中创建一个指向 uploads 的符号链接。 问题是每次我们提升应用程序时,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'
        ]);
    };
    

【讨论】:

    猜你喜欢
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多