静态文件在开发中提供但不在生产中提供

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态文件在开发中提供但不在生产中提供相关的知识,希望对你有一定的参考价值。

我正在运行rails 3.2.11。

我正在使用一个JS插件(epiceditor),它要求我有几个js调用的静态文件。 在开发中,我能够轻松地通过资产管道访问文件。

在生产中,我已经将服务静态资产设置为true,但它仍然没有出现。

 config.serve_static_assets = true

这些文件保存在assets目录中:

- assets
    - stylesheets
       - epiceditor

在开发中,它有效: 在此输入图像描述

在生产中,它不起作用: 在此输入图像描述

正在执行JS代码以插入css:

  function _insertCSSLink(path, context, id) {
    id = id || '';
    var headID = context.getElementsByTagName("head")[0]
      , cssNode = context.createElement('link');

    _applyAttrs(cssNode, {
      type: 'text/css'
    , id: id
    , rel: 'stylesheet'
    , href: path
    , name: path
    , media: 'screen'
    });

    headID.appendChild(cssNode);
  }

我在控制台中看到的内容:

Resource interpreted as Stylesheet but transferred with MIME type application/json: "http://www.fulfilled.in/assets/epiceditor/epiceditor.css". application.js:30
(anonymous function)
答案

几件事。

1。 静态资产与assets目录无关。 静态资产是存储在应用程序的公共目录中的资产。 资产管道在哪里编译资产。

第2位。 查看你的app / assets / stylesheets / application.css,看看是否需要epiceditor,所以它将与其他资产一起预编译。 使用它require epiceditor/epiceditorrequire_tree epiceditorrequire_tree . 。 最后一个将编译你的文件夹中的所有资产,顺便说一句。

3。 你在生产中使用http服务器(Apache或nginx)吗? 如果是这样,您应该关闭static_assets服务,因为它将由服务器处理,并查看您的服务器配置。

以上是关于静态文件在开发中提供但不在生产中提供的主要内容,如果未能解决你的问题,请参考以下文章

提供静态文件 django 1.9 生产错误

Django提供静态文件服务

Django:如何在生产中的apache服务器上部署静态文件

Google App Engine 不提供静态文件

为啥 GCM 不在 android 设备中提供推送通知?

为啥我的静态文件在部署到 Heroku 服务器时没有提供? (姜戈)