快递js外部JavaScript文件不加载

我使用一个快速的应用程序来提供静态的预编译的jade文件。 其中包括一个外部的JavaScript文件。 但是在页面加载的时候没有加载。 但我可以访问的快递静态/公共url的JavaScript。 为什么不在html上加载?

app.js

var express = require('express'), path = require('path'), sass = require('node-sass'); var app = express(); /* default configurations */ app.set('views', __dirname + '/public'); app.engine('html', require('ejs').renderFile); app.use(express.static(path.join(__dirname, 'public'))); /* routes */ app.get('/', function(req, res) { res.send('Hello World'); }); app.get('/home', function(req, res) { res.render('index.html'); }); module.exports = app; 

的index.html

  <body> <script type="text/javscript" src="/scripts/site.js"></script> <script type="text/javascript"> window.onload = function() { Site.View.init(); } </script> </body> 

site.js

 var Site = Site || {}; Site.View = { init : function() { alert('view'); } }; 

当我在浏览器中打开页面时,我得到ReferenceError:网站没有定义

谢谢。

添加app.use('/public/js', express.static(path.join(__dirname, '/public/scripts'))); 到app.js,以指示pulic文件夹的子文件夹;

如果仍然无效, src="/scripts/site.js"更改为src="/public/scripts/site.js" ;

site.js必须位于您的根目录中的public / scripts内。

我不知道,但意见和expression静态页面已经到您的代码中的公共目录。 使用默认configuration: app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.use(express.static(path.join(__dirname, 'public'))); app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.use(express.static(path.join(__dirname, 'public')));

你也可以像这样为它添加一个路由:

 app.get('scripts/site.js', function(req, res){ res.send('./scripts/site.js'); }