2013-04-05 73 views
6

我正在使用ExpressJS。我的脚本或CSS不会加载。脚本未被调用

<html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/> 
    <meta name="apple-mobile-web-app-capable" content="yes"/> 
    <meta name="apple-mobile-web-app-status-bar-style" content="black"/> 
<title>Customer Info</title> 

    <link rel="stylesheet" href="/stylesheets/testing.css" type="text/css" media="screen" charset="utf-8"/> 

    <script type="text/javascript" src="/javascripts/jquery-1.9.1.js"></script> 
    <script src="/javascripts/jquery-ui-1.10.2.custom.js" type="text/javascript" charset="utf-8"></script> 

    <script type="text/javascript" src="/javascripts/testing.js"></script> 



    </head> 
    <body> 
     //body contents 
    </body> 
</html> 

我知道问题不在于位置。当我以快速渲染此EJS视图时,没有任何脚本正在加载。我不明白为什么它可以用于几乎相同的观点,但不是这一个。有任何想法吗?

+0

你会得到什么错误? – 2013-04-05 19:30:10

+0

确保Express的静态处理程序在**路由之前已列出**。 – 2013-04-05 19:48:40

+1

如何配置'express.static()'? – robertklep 2013-04-05 19:56:55

回答

4

步骤1

在你node.js文件中找到您配置明确的部分。

这将是。

var express = require('express') 
       , app = express(); 

app.configure(function() { 
    //configure the express codes go here 
} 

其中检查了您配置服务于静态文件的文件夹的代码行。像图像,CSS和JS。我会喜欢。

app.use(express.static(__dirname + '/public')); 

这里在上述情况下public应该是到底是哪认为你在上面的html提到的stylesheetsjavascripts文件夹中的父文件夹的名称。

--app.js 
--package.json 
--views/ 
--node_modules/ 
--public/ 
    --stylesheets/ 
     --testing.css 
    --javascripts/ 
     --jquery-1.9.1.js 
     --jquery-ui-1.10.2.custom.js 
     --testing.js 

步骤2

如果上述配置正确,那么你可以确保

app.use(express.static(__dirname + '/public')); 
在配置

来提前

app.use(app.router); 

使你可以ake保证你的线路不会被你在路由器上编写的404路由处理程序忽略。

步骤3

您可以FirebugChrome inspector检查呈现的页面,并在网络选项卡是什么你,你刚才提到的js和css文件收到的响应检查。 根据你的问题,它应该是404文件未找到,如果其他东西你应该更新它的问题。

步骤4

如果您仍然无法修复的问题,那么你有你正在使用Node.js的代码更新的问题。所以我们可以研究它。

1

我相信这是“/”在每个src行的开始没有加载。例如..使用它们这样

<link rel="stylesheet" href="stylesheets/testing.css" type="text/css" media="screen" charset="utf-8"/> 

<script type="text/javascript" src="javascripts/jquery-1.9.1.js"></script> 
<script src="javascripts/jquery-ui-1.10.2.custom.js" type="text/javascript" charset="utf-8"></script> 

<script type="text/javascript" src="javascripts/testing.js"></script> 

好,这些脚本和CSS文件都在各自的文件夹,并引用他们,你只需要直接从它的名字开始的来源,例如src="folder/script.css"

这是文件夹比html文件高一级的情况。例如

您的index.html文件在文件夹1

你的style.css文件在文件夹1 >> CSS

您的script.js文件在文件夹1 >>脚本

然后这个级别,以上建议将100%工作。如果其他类型的水平在那里,如

的index.html是在文件夹1 >>文件夹2 >> index.html的

的style.css是在文件夹1 >> CSS

的script.js是在文件夹1 >> JS

那么你的src应该像

<link rel="stylesheet" href="./stylesheets/testing.css" type="text/css" media="screen" charset="utf-8"/> 

<script type="text/javascript" src="./javascripts/jquery-1.9.1.js"></script> 
<script src="./javascripts/jquery-ui-1.10.2.custom.js" type="text/javascript" charset="utf-8"></script> 

<script type="text/javascript" src="./javascripts/testing.js"></script> 

请注意一个 “”点开始。这意味着代码将从后面的一个文件夹引用文件。如果该文件是2个文件夹背后,然后用它的两倍,如././folder1/css

希望帮助

1

你必须设置expressJS到使用链接包含js和css资产或公共文件夹的静态链接文件夹。

express.static(__dirname + '/assets', { maxAge: 24*60*60*1000 } 

然后用圆点HREF链接的开头或简单地增加服务器的URL来代替。例如:

<link rel="stylesheet" href="../css/test.css" type="text/css" >