【问题标题】:Node.js require works but attribute isn't definedNode.js 需要工作,但未定义属性
【发布时间】:2018-09-21 14:07:35
【问题描述】:

问题:

我包含一个 .js 文件,需要访问这些功能。

我需要的文件如下所示:

MyFile = {

f1: function(value) {
    // some code
},

f2: function(value) {
    // some code
}, 

// and so one....

代码截断了我如何调用函数 f1:

expr = MyFile.f1('Hello');

有趣的是,它在我的情况下不起作用。要求部分工作正常。我测试了这是否可能是问题,但事实并非如此。拥有相同代码的同事可以毫无问题地运行它,但是我收到以下消息:

ReferenceError: MyFile 未定义。

谁能解释一下是什么导致了这个问题?

解决方案:

我现在使用的是module.expoerts 而不是require,它工作正常。

在这里你可以看到我做了什么:

MyFile = {改为module.exports = {

require('./MyFile.js'); 分配给一个属性,例如 var MyFile = require('./MyFile.js');

【问题讨论】:

  • 我需要看看你是如何要求你的文件的
  • 像这样:require('./MyFile.js')。这两个文件在同一个文件夹中。我试图在没有 ./ 的情况下要求它,但他找不到该模块。它证明我找到了该模块。
  • 你在底部的 MyFile 脚本中做 module.exports = MyFile 吗?

标签: node.js


【解决方案1】:

看起来您在“严格模式”下运行代码,而您的同事没有,因此他没有收到参考错误。

【讨论】:

    【解决方案2】:
    MyFile = {
    
    f1: function(value) {
        // some code
    },
    
    f2: function(value) {
        // some code
    }, 
    
    // and so one....
    module.exports = MyFile;
    

    const MyFile = require('./MyFile.js');
    

    【讨论】:

      【解决方案3】:

      像这样编写任何你想导出的代码

         exports.MyFile = {
      
          f1: function (value) {
              // some code
          },
      
          f2: function (value) {
              // some code
          }
      }
      

      另存为moduleFile.js

      然后这样称呼它

      let obj= require('./moduleFile');
      // Use Object MyFile from moduleFile like this
      
      obj.MyFile.f1('Hello');
      
      • 注意 1:不要在任何地方都使用像 myfile 这样容易混淆的名称。

      • 注意 2:导入时不要 .js 扩展。

      • 注意 3:您也可以在不使用对象的情况下从那里导出函数,但通常不建议这样做。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-11
        • 2018-02-16
        • 1970-01-01
        相关资源
        最近更新 更多