Javascript 使用require/new在node.js中实例化一个新对象

Javascript 使用require/new在node.js中实例化一个新对象,javascript,node.js,oop,require,Javascript,Node.js,Oop,Require,我在使用node.js时遇到了一个非常简单的初学者问题,但我似乎无法让它正常工作 我想要的只是能够在index.js文件中使用“new”操作符创建对象。 出于演示目的,我在Person.js文件(与index.js位于同一目录中)中创建了一个简单的Person对象,如下所示: class Person { constructor() { this._name = 'bob'; } set name(name) { this._name = name } g

我在使用node.js时遇到了一个非常简单的初学者问题,但我似乎无法让它正常工作

我想要的只是能够在index.js文件中使用“new”操作符创建对象。 出于演示目的,我在Person.js文件(与index.js位于同一目录中)中创建了一个简单的
Person
对象,如下所示:

class Person {
  constructor() {
    this._name = 'bob';
  }

  set name(name) {
    this._name = name
  }

  get name() {
    return this._name;
  }  
}
现在我想做一些类似的事情(在index.js文件中):

我收到的错误消息告诉我此人不是构造函数:

var bob = new p.Person()
      ^

TypeError: p.Person is not a constructor
at Object.<anonymous> (/home/.../index.js:59:11)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Function.Module.runMain (module.js:693:10)
at startup (bootstrap_node.js:188:16)
at bootstrap_node.js:609:3
var bob=new p.Person()
^
TypeError:p.Person不是构造函数
反对。(/home/../index.js:59:11)
编译(Module.js:652:30)
在Object.Module.\u extensions..js(Module.js:663:10)
在Module.load(Module.js:565:32)
在tryModuleLoad时(module.js:505:12)
在Function.Module.\u加载(Module.js:497:3)
位于Function.Module.runMain(Module.js:693:10)
启动时(bootstrap_node.js:188:16)
在bootstrap_node.js:609:3

非常感谢您的帮助。

如果您想从另一个JS文件中请求或导入类/函数/对象/任何内容,您需要将其导出并在当前文件中导入/请求。这些被称为模块

在您的情况下,创建后需要导出
Person
类。否则JS没有任何引用。加

module.exports = Person
人员
类下方。现在您可以通过

const Person = require('./person);
const p = new Person();
对于新的ES6类,您也可以使用
导入/导出

// Export Person Class

export default class Person {
    ....
}

// Now, import
import Person from './person'

你只能在已经导出的情况下导入一些东西。我以前也尝试过使用导出,但我想我对JS中的许多方法感到困惑。。。您的解决方案适合我,非常感谢。:)
// Export Person Class

export default class Person {
    ....
}

// Now, import
import Person from './person'