外部js文件中的XHR导致应用崩溃

时间:2018-12-03 14:47:32

标签: javascript node.js express

我有一个api.js文件,我在其中进行了两次XHR请求。我在.ejs文件的 script标记中使用了它,但是它变得太拥挤了。因此,在将所有内容移至api.js之后,我将无法再访问其数据。

每次我尝试从我的app.js程序崩溃时要求它时。[nodemon] app crashed - waiting for file changes before starting...我试图将它放在public文件夹中以及其他一些地方,但是它永远无法正常工作。

是否应该像处理数据模式一样从api.js导出数据?如果是这样,我该怎么做? (就像module.exports = mongoose.model("Data", dataSchema);一样?api.js中没有任何模型,这只是几个请求)

应该使用.ejs的{​​{1}}文件具有这样的路由:

api.js

app.get('/home', function(req, res){ res.render('home', { moment: moment }); //home is an .ejs file }); 来自moment.js。如果我应该导出{ moment: moment },那么由于已经使用api.js,如何在此路由中使用它。我想我不能做

moment.js

主要问题可能是应用程序崩溃,因为如果不解决此问题,我将无法解决其他任何问题。

感谢您的帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

我不确定您了解多少过程,但是您的ejs文件是“模板” ---您将“变量”传递给它并“呈现”它,然后express发送html文件。呈现后,“变量”将不再可访问,除非像您一样将其传递到<script>标记中。 (我不确定您如何使用moment ---也许您仅使用moment来呈现服务器端内容)

您的html文件可以使用script标记而不是尝试传递api,该脚本标记可以引用其他文件,例如

<script src='/js/api.js'></script>

但是您的服务器(通过express.js)需要提供此文件。

这是常见的选择,应该对您有用。

通常除非您需要模块或库来呈现某些内容,否则通常不会将其“传递”给模板引擎。但是,如果您愿意,还可以将api.js文件作为字符串读取,然后将其“注入”到脚本标签中……(我通常不这样做)

<script><%= api %></script>