如果问题标题可能不方便,我会提前道歉。我很确定Ubuntu Server 12.04不是原因,但我可以解释一下诀窍......
我的网站使用带LESS的Bootstrap及其客户端编译(我正处于开发周期,因此我想将其保留在客户端)。在我的本地实例(使用Ubuntu 12.04的笔记本电脑)上一切正常但从我的服务器实例(在Ubuntu Server 12.04上运行)请求同一网站时不会生成样式。
两者都使用相同的mod运行Apache 2.2.22:alias,auth_basic,authn_file,authz_default,authz_groupfile,authz_host,authz_user,autoindex,cgi,deflate,dir,env,headers,mime,negotiation,php5,reqtimeout,rewrite, setenvif,ssl,status。
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>My website</title>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<meta content="" name="description">
<meta content="alterphp" name="author">
<link href="/bundles/mywebsite/css/main.less" type="text/css" rel="stylesheet/less">
<link href="/bootstrap/less/responsive-768px-979px.less" type="text/css" rel="stylesheet/less">
<script type="text/javascript" src="/jquery/jquery.js"> ... </script>
<script type="text/javascript" src="/jquery.form.js"> ... </script>
<script type="text/javascript" src="/bundles/mywebsite/js/less-1.3.0.min.js"> ... </script>
<style id="less:bundles-mywebsite-css-main" type="text/css" media="screen"> **Style is well processed** </style>
<style id="less:error-message" type="text/css" media="screen"> ... </script>
</head>
<body>
...
</body>
</html>
使用FireBug,我可以看到在“网络”选项卡中只显示了两个较少的文件。 main.less 导入少量在main.less响应中处理的文件。
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>My website</title>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<meta content="" name="description">
<meta content="alterphp" name="author">
<link href="/bundles/mywebsite/css/main.less" type="text/css" rel="stylesheet/less">
<link href="/bootstrap/less/responsive-768px-979px.less" type="text/css" rel="stylesheet/less">
<script type="text/javascript" src="/jquery/jquery.js"> ... </script>
<script type="text/javascript" src="/jquery.form.js"> ... </script>
<script type="text/javascript" src="/bundles/mywebsite/js/less-1.3.0.min.js"> ... </script>
<style id="less:error-message" type="text/css" media="screen"> ... </script>
</head>
<body>
...
</body>
</html>
没有从main.less处理样式... 使用FireBug,我可以看到从 main.less 导入的所有较少文件在网络选项卡中显示为已下载。
编辑1: 我到达我的页面,每个资源一个接一个(每个LESS文件都可以访问和完成)。我在网络选项卡中没有错误,只是我的服务器实例上没有处理LESS样式...
我对这个谜团有任何建议!
答案 0 :(得分:1)
对我来说问题来自less.js
https://github.com/cloudhead/less.js/blob/master/dist/less-1.3.0.js
查看第3107至3112行
less.env = less.env || (location.hostname == '127.0.0.1' ||
location.hostname == '0.0.0.0' ||
location.hostname == 'localhost' ||
location.port.length > 0 ||
isFileProtocol ? 'development'
: 'production');
您可以尝试通过在第3112行之后添加来强制less.env的值。
less.env ='production';
或
less.env ='development';
例如:如果您的开发服务器有dns记录,例如“ubuntuserver”,并且您使用网址“http:// ubuntuserver”访问网络服务器
然后less.env ='生产';因为资源是本地的,所以出了点问题。
答案 1 :(得分:1)
强制 less.env 到开发帮助了我,因为我发现了LESS的调试模式......即使我的本地实例也有一个主机名,所以less.env总是'生产'我从来没有看到任何来自LESS的错误。
我的错误是我导入的子文件或相对路径太多的文件较少。对于这个模糊的解释感到抱歉,但这是我在github上从这个问题得到的:https://github.com/cloudhead/less.js/issues/723