如何从Sails.js中的视图访问资产/图像?

时间:2013-09-13 12:18:32

标签: html ejs sails.js

我只是想在我的Sails-Project

中的视图中添加图像

我的视图文件具有位置

views/album/albums.ejs

,图片位于

assets/images/placeholder.png

如果我像这样添加图像

<img src="../../assets/images/placeholder.png">

我收到此错误

GET    http://localhost:1337/assets/images/placeholder.png    404 (Not Found)

我错过了什么吗?

5 个答案:

答案 0 :(得分:14)

Sails使用Grunt(项目根目录中的Gruntfile.js)在风帆升降期间执行某些任务。其中一项任务是将文件从assets目录复制到.tmp / public /目录(在开发版本中)。因此,如果您将文件添加到assets目录,则需要重新启动sails(sails lift)以从.tmp / public /(什么是公共可访问目录root)访问它。另外需要注意的是,如果你把文件直接放到.tmp / public /它会立即访问,但是在下一个风帆上它会被删除,因为Grunt任务之一是在复制新文件之前清除该目录。所有这些你都可以在sails文档(assetsasset-management)上找到并通过阅读项目根目录中的Gruntfile.js

答案 1 :(得分:8)

<img src="/images/placeholder.png">

应该有效。 assets文件夹相当于在express中添加带有静态中间件的文件夹。

asset documentation

答案 2 :(得分:3)

看起来你已删除了grunt个钩子。

删除grunt挂钩时,您还必须在.sailsrc中指定以下内容,以便为您的资产提供服务,否则所有资源都将返回 404

{
  "paths": {
    "public": "assets"
  }
}

答案 3 :(得分:0)

我也遇到了同样的问题 在风帆版本0.12.0,
我试图将资源文件夹中的图像显示到homepage.ejs 然后通过使用下面的img标签,它解决了我的问题。

<img src="/images/placeholder.png" width="30px" height="30px">

但是因为你的ejs文件位于views / album / albums.ejs

我可能会建议,下面可能会有效

<img src="../images/placeholder.png" width="30px" height="30px">

但是在sails ejs页面中的正确方法是,

<img src="/images/placeholder.png" width="30px" height="30px">

这也必须适合你。

答案 4 :(得分:0)

如果您的项目中有 tasks / sync.js 文件,请在files数组中添加以下对象:

{
        cwd: './assets/images',
        src: ['**/*.*'],
        dest: '.tmp/public/images'
}

您需要安装sails-hook-grunt和grunt-sync。