Express js外部javascript文件未加载

Express js external javascript file not loading

本文关键字:加载 文件 javascript js 外部 Express      更新时间:2023-09-26

我使用一个express应用程序来提供一个静态预编译的jade文件。其中包括一个外部javascript文件。但是在页面加载的时候它不会被加载。但是我可以通过express static/public 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: Site is not defined

谢谢。

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

如果仍然不行,将src="/scripts/site.js"改为src="/public/scripts/site.js";

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

我不确定,但视图和表达静态页面都去了公共目录在你的代码。使用默认配置如下: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');
}