脚本没有被调用

我正在使用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视图时,没有任何脚本正在加载。 我不明白为什么它会为几乎相同的观点工作,但不是这个。 有任何想法吗?

步骤1

在你的node.js文件中findconfigurationexpress的部分。

这将是。

  var express = require('express') , app = express(); app.configure(function() { //configure the express codes go here } 

在那里检查你configuration服务于静态文件的文件夹的代码行。 像图像,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步

如果以上configuration正确,那么你可以确定

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

在configuration之前

 app.use(app.router); 

这样就可以确保你的线路不会被你在路由器上编写的404路由处理程序忽略。

第3步

您可以使用FirebugChrome inspector呈现的页面,并在networking选项卡中检查您收到的针对您提到的js和css文件的响应。 根据你的问题,它应该是404文件没有find,如果其他东西你应该更新它的问题。

步骤4

如果你仍然不能解决这个问题,那么你必须用你正在使用的node.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> 

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

这是如果文件夹比HTML文件高一级。 例如

您的index.html文件位于folder1中

你的style.css文件在folder1 >> css中

你的script.js文件在folder1 >> scripts

那么对于这个水平,以上build议将100%的工作。 如果有其他types的级别,例如

index.html位于folder1 >> folder2 >> index.html

style.css在folder1 >> css中

script.js位于folder1 >> 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

希望有所帮助

您必须将expressJS设置为使用链接您的资产或包含js和css文件夹的公用文件夹的静态链接

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

然后在href链接的开始处使用点或者直接添加服务器url。 例如:

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