我使用快速应用程序来提供静态预编译的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:未定义网站
感谢。
答案 0 :(得分:1)
将app.use('/public/js', express.static(path.join(__dirname, '/public/scripts')));
添加到app.js,以指示公用文件夹的子文件夹;
如果仍无效,请将src="/scripts/site.js"
更改为src="/public/scripts/site.js"
;
答案 1 :(得分:0)
site.js必须位于根目录下的public / scripts中。
我不确定,但是您的代码中的视图和表达静态页面都已转到公共目录。
使用默认配置为:
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.static(path.join(__dirname, 'public')));