Express js外部javascript文件未加载

Express js外部javascript文件未加载,javascript,html,node.js,express,Javascript,Html,Node.js,Express,我使用express应用程序提供静态预编译的jade文件。其中包括一个外部javascript文件。但是当页面被加载时,它不会被加载。但是我可以通过express静态/公共url访问javascript。为什么不在html上加载 app.js var express = require('express'), path = require('path'), sass = require('node-sass'); var app = express(); /* default

我使用express应用程序提供静态预编译的jade文件。其中包括一个外部javascript文件。但是当页面被加载时,它不会被加载。但是我可以通过express静态/公共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;
var Site = Site || {};
Site.View = {
  init : function() { alert('view'); }
};
index.html

  <body>
    <script type="text/javscript" src="/scripts/site.js"></script>
    <script type="text/javascript">
      window.onload = function()  {
        Site.View.init();
      }
    </script>
  </body>
当我在浏览器中打开页面时,我得到参考错误:未定义站点

谢谢。

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


如果仍然不起作用,请将
src=“/scripts/site.js”
更改为
src=“/public/scripts/site.js”

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

我不确定,但在您的代码中,视图和express静态页面都已转到公共目录。 将默认配置用作:
app.set('views','udirname+/views');
应用程序集(“查看引擎”、“ejs”);

app.use(express.static(path.join(uu dirname,'public'))

您也可以像这样为其添加路由:

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

我的第一个猜测是你的引擎没有初始化。您可能希望了解您是如何实现app.engine的。node.js中几乎所有的失败都来自于一些简单的原因。就像缺少一个参数或括号一样。@Brian我尝试了多种方法,即使我尝试了
res.sendfile('[path\u to\u the\u file]profile.html')
,但js仍然没有加载。有趣。如果你找到了这个,我很想知道你为什么会得到这个。我总是使用示例Web服务器的一个变体,并以这种方式运行所有内容。您能否显示项目/应用程序的目录结构,以及
index.html
site.js
在该结构中的确切位置?