[英]How to use a .js file outside of the public folder in Node Express App?
我是Node Express的新手,希望获得一些帮助以解决以下问题。
以下是我的Node Express应用程序的项目结构
资料夹结构:
以下是我的app.js代码
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var index = require('./routes/index');
var users = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', index);
app.use('/users', users);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
我有一个controller.js文件,该文件当前位于公共文件夹中(请参阅文件夹结构)
我有一个使用controller.js的index.hbs文件(代码如下所示)
<!DOCTYPE html>
<html ng-app="test">
<head>
<title>{{title}}</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular-route.min.js"></script>
<script src="controller.js"></script>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body ng-app="test">
{{{body}}}
<!--
<div ng-view></div>
-->
</body>
</html>
当我运行该应用程序时,它工作正常。
我需要从公用文件夹中删除controller.js文件,并将其转储到controller文件夹中(请参阅文件夹结构图),然后在运行程序时出现以下错误,
GET http:// localhost:3000 / controller.js 404(未找到)
我已经对index.hbs文件中的<script src="controller.js"></script>
进行了多种更改,以使我可以在没有任何错误但没有运气的情况下运行它。
任何建议将不胜感激。
您必须提供要用HTML引用的所有内容。
因此,您可以将代码移至其他目录并提供服务,也可以将其移至其他服务器,但不能将其移至根本无法提供服务的任何位置,否则将无法在HTML中加载代码。
所有客户端JavaScript代码必须可供客户端下载,否则将无法正常工作。 因此,将其保存在公共目录中不仅是可以的,而且是必要的。 当然,您可能只希望将其提供给某些客户端,但是必须将其提供给获得使用它的HTML的任何人,并且几乎没有办法解决它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.