类型错误:尝试在 Express JS 中使用 Mustache 时,this.engine 不是函数

2024-04-04

作为我在 NodeJS 上尝试的第一件事,我正在构建一个简单的应用程序,它显示一个 HTML 页面,告诉访问者他们的 IP 地址。

它看起来是这样的

var express = require('express');
var app = express();

app.set('view engine', 'mu2');

app.get('/', function (req, res) {
    res.setHeader('Content-Type', 'text/html');    // Do I have to do this? I'm not sure.
    res.render('frontPage.html', {
        ip: req.ip
    });
res.send();
});

app.listen(8080, function() {
    console.log("Listening on port 8080");
});

就是这样/views/frontPage.html好像:

<!DOCTYPE html>
<html>
    <head>
        <title>Hello, World!</title>
    </head>
    <body>
        <h1>Hello, World!</h1>
        <hr>
        <p>If you're reading this, the NodeJS setup is working. Check your developer console. See if there's any HTTP error in there.</p>
        <p>Anyway, your IP address is {{ip}}</p>
    </body>
</html>

这是每次发送请求时我在控制台中得到的内容:

TypeError: this.engine is not a function
    at View.render (/Users/macuser/NodeJS/hello/node_modules/express/lib/view.js:126:8)
    at tryRender (/Users/macuser/NodeJS/hello/node_modules/express/lib/application.js:639:10)
    at EventEmitter.render (/Users/macuser/NodeJS/hello/node_modules/express/lib/application.js:591:3)
    at ServerResponse.render (/Users/macuser/NodeJS/hello/node_modules/express/lib/response.js:960:7)
    at /Users/macuser/NodeJS/hello/index.js:8:9
    at Layer.handle [as handle_request] (/Users/macuser/NodeJS/hello/node_modules/express/lib/router/layer.js:95:5)
    at next (/Users/macuser/NodeJS/hello/node_modules/express/lib/router/route.js:131:13)
    at Route.dispatch (/Users/macuser/NodeJS/hello/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/Users/macuser/NodeJS/hello/node_modules/express/lib/router/layer.js:95:5)
    at /Users/macuser/NodeJS/hello/node_modules/express/lib/router/index.js:277:22

我已经设置了frontPage.html inside views/我已经从 NPM 安装了 Mustache (npm install mu2 --save)。 它出什么问题了?


我最终绕过 Express 的模板系统并使用 Mustache 自己的compileAndRender()。像这样:

var express = require('express');
var app = express();
var mu2 = require('mu2');
mu2.root = __dirname + '/views';

app.get('/', function (req, res) {
    var htmlStream = mu2.compileAndRender('frontPage.html', {ip: req.ip});
    htmlStream.pipe(res);
});

app.listen(8080, function () {
    console.log("Listening on port 8080");
});

现在可以了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类型错误:尝试在 Express JS 中使用 Mustache 时,this.engine 不是函数 的相关文章

  • 在生产中使用 babel-node 可以吗

    我一直在使用 babel node 和 browserify 以及 babelify 转换来开发一个网站 以支持 ES6 语法 我只是想知道 我可以在生产中运行它吗 babel node server 而不是 node server 要在
  • AWS Lambda 提前结束(没有任何显式返回或回调)

    我在放入 AWS Lambda 中的一些 Node js 代码时遇到了一些问题 我需要进行几个异步调用 虽然第一个调用的行为符合我的预期 但 lambda 函数在第二个调用完成之前终止 返回值为 null 这让我认为 lambda 正在执行
  • NodeJs读取JSON文件

    我正在使用 NodeJs 读取 json 文件 我的代码非常基本 var obj require sample json console log obj 0 Sample json 文件包含这样的字符串化 JSON sample good
  • 变量前面加双下划线

    我的节点代码中有以下代码片段 var fs require fs fs readdir dirname function err files console log files 为什么变量 dirname 有双下划线 我知道一个下划线是私有
  • npm 错误! cb.apply 不是函数

    我收到这个错误 npm ERR cb apply is not a function 在Linux中做的时候npm install虽然我的npm版本是6 9 0 我的节点版本是v12 18 3 如何解决这个问题 如果您共享的是 Window
  • Node.js:server.setTimeout、server.timeout 和 server.keepAliveTimeout 之间有什么区别

    官方文档是here https nodejs org api http html http server settimeout msecs callback server setTimeout 中没有提及有关服务下一个请求的信息 所以我认为
  • 了解使用 Windows 本机 WPF 客户端进行 ADFS 登录

    我已经阅读了大量有关 ADFS 与 NodeJS Angular 或其他前端 Web 框架集成以及一般流程如何工作的文献 并通过 Auth0 Angular 起始代码构建了概念证明 但我不明白如何这可以与本机 WPF Windows 应用程
  • Morgan Logger + Express.js:写入文件并在控制台中显示

    我正在尝试将 Morgan 与 Express js 结合使用来编写日志文件 同时也在控制台上显示我的日志 我正在使用这段代码 var logger require morgan var accessLogStream fs createW
  • 在 Redis 上为 Django 和 Express.js 应用程序共享会话存储

    我想创建一个包含一些登录用户的 Django 应用程序 另一方面 由于我想要一些实时功能 所以我想使用 Express js 应用程序 现在的问题是 我不希望身份不明的用户访问 Express js 应用程序的日期 因此 我必须在 Expr
  • 计算两点之间的最短路线

    过去几周我一直在开发一款多人 HTML5 游戏 使用nodejs and websockets 我已经被这个问题困扰了一段时间 想象一下 我用数组实现了这个平铺地图 如下所示 1 or 棕色瓷砖 路上有障碍物 玩家无法通过 0 or 绿色瓷
  • 使用 nw-gyp 构建 node-sqlite3

    我正在尝试为 node webkit 构建 sqlite3 The sqlite3 https www npmjs com package sqlite3 installing页面解释说它需要使用 nw gyp 来完成 据我了解 我应该下载
  • Node.js 中的 PHP exit()/die() 等价物是什么

    什么是 PHP die http www php net manual de function die php http www php net manual de function die php 在 Node js 中等效吗 https
  • 未捕获的 ReferenceError:未定义角度 - Mean.IO

    我已遵循安装步骤 http mean io docsmean io 但是当我浏览 localhost 3000 时 我得到一个空白页面 当我打开控制台时 我得到一个指向相同错误的文件列表 未捕获的引用错误 角度未定义 我的问题是类似的to
  • 将消息从 AWS Lambda 发布到 AWS IoT

    我正在尝试使用 Nodejs 将消息从 AWS Lamba 发布到 AWS IoT 我已压缩该项目并上传到 AWS IoT 下面是代码片段 var awsIot require aws iot device sdk var device a
  • GraphQL 预期可迭代,但未找到字段 xxx.yyy 的迭代

    我目前正在尝试使用 NodeJS 进行 GraphQL 但我不知道为什么以下查询会出现此错误 library name user name email 我不确定是否type of my resolveLibrary是对的 因为在任何例子中我
  • 如何使用 Chai Http 发布对象数组

    我正在尝试发布一个对象数组ChaiHttp https github com chaijs chai http像这样 agent post route to api send locations lat lat1 lon lon1 lat
  • 如何导入和导出 javascript ES6 类

    我是 javascript 和 nodejs 的新手 我正在使用这个项目来发展我的技能并学习新技术 目前我的项目使用多个相互依赖的类 类文件位于不同的目录中 我当前正在尝试使用 export 和 require 语句来允许在其他文件中引用类
  • 当尝试将 formData 发送到 Express js 时,服务器无法识别 multipart/form-data

    我正在尝试将表单数据上传到快递服务器 在我的 Express js 服务器上 我有以下内容 router post uploads id function req res res send req body const title req
  • Phantom-node模块无法加载外部资源

    我正在开发一个nodejs服务器 它将发布的html呈现为pdf png或jpg https github com svenhornberg pagetox https github com svenhornberg pagetox ser
  • 如何执行“sudo nvm”?

    在我的 Mac 上 我想将一些需要 su 权限的包迁移到另一个节点版本 我使用 homebrew 安装 nvm 现在我需要执行 sudo nvm 或 reinstall packages将失败 me MacBook sudo nvm sud

随机推荐

  • Bootstrap 下拉列表 z-index 显示在模式窗口页脚下

    我在引导程序方面遇到了一些样式问题 我有一个包含下拉菜单的小模态窗口 但是我似乎无法让下拉菜单显示在窗口的页脚上 我已经使用了下拉列表的 zindex 确保它高于 Windows 但没有运气 谁能建议我应该改变什么 The html div
  • 如何创建浮动操作按钮转变成单张材料

    我正在尝试查看设计库中是否存在任何内置动画来创建浮动操作按钮 并将其转换为单个材料表 如材料设计图像中所示 https material design storage googleapis com publish material v 4
  • Android:访问硬件相机预览帧数据而不绘制它们

    根据 Java SDK 端的 android 相机文档 必须为相机预览帧提供一个要绘制的 可见且活动的 表面 以便访问帧数据 我已经链接了我在这里遇到的一些内容 我是新人 所以最多有 2 个超链接 但是在最终在这里发布我自己的问题之前 我查
  • Heroku DATABASE_URL 作为 Maven 的 JDBC Url

    我在 Heroku 上的应用程序使用 DATABASE URL 使用 Java 将其解析为带有用户名和密码的 JDBC URL 很简单 那里没有问题 但是 我有一个带有 Maven 插件的 JOOQ 生成器和 Flyway 迁移器 但我不知
  • 如何使用 CodeIgniter ACL 库?

    如何实现 ACL 库 对用户角色使用 ACL 的最佳方法是什么 在标准 PHP 中 我会编写如下代码 if userTypeId Admin hello Admin else if userTypeId Member hello membe
  • 创建 ManagedCertificate 会导致“状态:FailedNotVisible”

    使用 Kubernetes 1 12 6 gke 7 或更高版本 可以创建一个 ManagedCertificate 然后从将服务暴露到互联网的入口资源中引用该证书 运行 kubectl describe Managedcertificat
  • 我可以检查 CoInitialize 是否已被调用吗?

    在具有ADO数据库连接的多线程环境中 我想知道CoInitialize是否已被调用 我该如何检查这个 通常你不应该做这个检查而只是打电话CoInitialize CoUnInitialize一对 你仍然可以这样做 function IsCo
  • 条码字段长度

    我正在写一些考勤软件 每个会员都会有一张带有条形码的身份证 他们将用它来登录活动 条形码字段在我的数据库中应该有多长 我想要接受 Code 39 和 Code 128 条形码 我知道这些是可变长度代码 那么我应该将最大长度设置为多少 Tha
  • 将方法指针转换为整数,然后调用它

    我想知道以下是否可能 如果可以 怎么办 请代码示例 如何储存一个指向对象方法的指针 as an 整数值 如何将该整数值转换回 方法指针 以及call it 我想要做的是将 方法指针 存储在 TComponent 派生对象的整数标记值中 然后
  • 如何确认SQL注入

    有什么方法可以确认特定的安全漏洞是通过 SQL 注入完成的吗 这里没有简单的方法 但是如果您启用了用于记录每个 SQL 语句的 SQL 服务器 这就是我要做的 通常 当我在某处进行 SQL 注入时 我会在结束前一个字符串后使用其中一个作为始
  • 如何在Fragment中实现缩放捏合手势

    我用过 ScaleGestureDetector 我使用了这段代码 但它在片段中不起作用 而且也没有显示任何错误 请任何人都可以帮助我解决这个问题 提前致谢 但是当我在活动中使用相同的代码时它工作得很好 public class Fragm
  • 如何使用 Groovy 获取 Jenkins 当前构建项目的具体信息?

    在 Jenkins Hudson 中 在 Postbuild Groovy 脚本的帮助下 我想获得以下其中一项 环境变量 例如当前的 JOB NAME BUILD NUMBER 等 当前项目的特定版本号的结果 当前项目中最后一次不成功构建的
  • 在 Node.js 数据流中通过换行获取块

    有一次我认为你可以告诉 Node js 子进程按换行符对数据进行分块 如下所示 子进程的 stderr 数据事件针对字符和单词而不是行触发 理想情况下 我可以传递一个标志来告诉流仅在一行数据准备就绪时触发数据事件 难道就没有办法做到这一点吗
  • Android - 即使应用程序被终止或设备重新启动,也会在后台运行服务

    我想保持服务在后台运行 即使我的应用程序被终止 我在用着android intent action USER PRESENT事件 但该服务仅在屏幕解锁时运行 我试过android intent action BOOT COMPLETED但下
  • Android 悬浮窗

    我想制作一个红色的覆盖窗口 你可以在下面看到我的代码 当我单击按钮时它不执行任何操作 哪里有问题 我怎样才能解决这个问题 请提出建议 谢谢你 public class MainActivity extends AppCompatActivi
  • 如何针对发布版本 APK 运行 Android/Robotium Instrumentation 测试用例?

    我有一个 Android 项目设置及其纯Java在PC上运行的单元测试项目 在模拟器上运行的功能 集成测试项目 这两个人利用InstrumentationTestCase2测试用例以及 Robotium 框架 我可以从 Eclipse 中运
  • 在詹金斯中找不到 hudson*.groovy

    我正在尝试使用 groovy 脚本配置 jenkins 作业 我不知道我的配置做错了什么 我什至无法执行一个简单的 groovy 命令 例如 println System getenv PATH 当詹金斯尝试构建时 它显示以下堆栈跟踪 然后
  • 新的 C++ 返回语法是否受到限制?

    我开始了一个新的私人项目并决定使用更多C 11 https en wikipedia org wiki C 2B 2B11 14 https en wikipedia org wiki C 2B 2B14这次 所以我也开始使用新的返回语法
  • ' aria-label='错误 F# - c# 异步调用:将 Threading.Tasks.Task 转换为 Async<'a>'> 错误 F# - c# 异步调用:将 Threading.Tasks.Task 转换为 Async<'a>

    当我尝试从 F 代码调用 C 库中的异步方法时 我收到以下编译错误 该表达式原本应具有 Async 类型 但此处具有 Threading Thread Tasks Task 类型 SendMessageAsync位于 C 库中并返回Thre
  • 类型错误:尝试在 Express JS 中使用 Mustache 时,this.engine 不是函数

    作为我在 NodeJS 上尝试的第一件事 我正在构建一个简单的应用程序 它显示一个 HTML 页面 告诉访问者他们的 IP 地址 它看起来是这样的 var express require express var app express ap