【问题标题】:Why do I get an error "not defined" in EJS?为什么我在 EJS 中收到“未定义”错误?
【发布时间】:2021-06-29 09:35:46
【问题描述】:

我正在尝试将一个页面翻译成某种语言,所以我有一个名为language.js 的文件,其中有一个变量language_pack,用于存储所有翻译。我在我的服务器文件中引用了包含该文件的文件夹,然后在我的 ejs 文件中继续使用 language_pack 只是被告知它没有定义

我的服务器文件中的代码:

var express = require('express');
var router = express.Router();
// language_pack is located under a file called language.js 
// under the configurations folder`var 
language_pack = require("../configuration/language.js");
console.log(language_pack)
/* GET home page. */
router.get('/', function(req, res, next) {
  console.log("Hello World")
  res.render("index", {
    lang: "ms",
    language_pack: language_pack
  });
});
router.get('/MuscleTest', function(req, res, next) {
  console.log("Hello World")
  res.render("MuscleTest", {
    lang: "ms",
    language_pack: language_pack
  });
});

在配置文件夹下的language.js文件中,lan​​guage_pack定义为:

var language_pack={ms:{
    fourth_step:"Sit to stand"
}}

在我的 ejs 文件中,在这一行,当我尝试运行它时,我得到一个 language_pack is not defined 错误。:

<h3><%=language_pack[lang]["fourth_step"]%></h3>

【问题讨论】:

  • 在 node.js 中定义语言包的代码在哪里?
  • 请编辑您的问题,包括所有相关代码作为文本,而不是图像
  • @spender 我在帖子中添加了一些代码和更多解释。希望这会有所帮助
  • “未定义语言包”错误。这是具体的错误措辞吗?
  • 你忘了给module.exports分配任何东西

标签: javascript node.js ejs


【解决方案1】:

您的language.js 应如下所示。如果您需要导入或需要某些内容,则应将其导出到该模块 (.js) 中。

有关要求的更多信息:https://nodejs.org/en/knowledge/getting-started/what-is-require/

// language.js
module.exports = {
    ms: {
        fourth_step: "Sit to stand"
    }
};

也请改正,

language_pack = require("../configuration/language.js");

作为

const language_pack = require("../configuration/language");

【讨论】:

    猜你喜欢
    • 2020-09-28
    • 2012-01-30
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多