sna*_*ggs 4 node.js ecmascript-6
我尝试学习 Node.js (ES6) 但失败了 require
这是我的结构:
基础模型.js
"use strict";
class BaseModel {
constructor(options = {}, data = []) { // class constructor
this.name = 'Base'
this.url = 'http://azat.co/api'
this.data = data
this.options = options
}
getName() { // class method
console.log(`Class name: ${this.name}`)
}
}
Run Code Online (Sandbox Code Playgroud)
账户模型.js
"use strict";
require('./baseModel.js');
class AccountModel extends BaseModel {
constructor(options, data) {
super({private: true}, ['32113123123', '524214691']) //call the parent method with super
this.name += 'Account Model'
this.url +='/accounts/'
}
get accountsData() { //calculated attribute getter
// ... make XHR
return this.data
}
}
Run Code Online (Sandbox Code Playgroud)
主文件
"use strict";
require('./AccountModel.js');
let accounts = new AccountModel(5)
accounts.getName()
console.log('Data is %s', accounts.accountsData);
Run Code Online (Sandbox Code Playgroud)
现在我运行: node --harmony-default-parameters main.js
并得到错误:
ReferenceError: BaseModel 未在 Object 中定义。(/Users/tamirscherzer/POC/projects/NodeJS/tutorials/classes/AccountModel.js:5:28) at Module._compile (module.js:397:26) at Object.Module._extensions..js (module.js :404:10) at Module.load (module.js:343:32) at Function.Module._load (module.js:300:12) at Module.require (module.js:353:17) at require (internal /module.js:12:17) 在对象。(/Users/tamirscherzer/POC/projects/NodeJS/tutorials/classes/main.js:5:1) at Module._compile (module.js:397:26) at Object.Module._extensions..js (module.js :404:10)
真的很奇怪,如果我更改require('./baseModel.js');为其他名称,则会出现找不到文件的错误,因此路径写入正确。
还定义了权限777- 同样的事情,BaseModel is not defined
有任何想法吗?
当您在 Node 中定义一个变量时,它不会像在浏览器中那样添加到全局范围内——它是该文件/模块的本地变量。因此,您不能简单地导入文件并期望您在其中定义的内容可用 - 您必须明确地导出和导入它们。
基础模型.js:
class BaseModel {
constructor(options = {}, data = []) { // class constructor
this.name = 'Base'
this.url = 'http://azat.co/api'
this.data = data
this.options = options
}
getName() { // class method
console.log(`Class name: ${this.name}`)
}
}
module.exports = BaseModel;
Run Code Online (Sandbox Code Playgroud)
账户模型.js:
"use strict";
let BaseModel = require('./baseModel.js');
class AccountModel extends BaseModel {
constructor(options, data) {
super({private: true}, ['32113123123', '524214691']) //call the parent method with super
this.name += 'Account Model'
this.url +='/accounts/'
}
get accountsData() { //calculated attribute getter
// ... make XHR
return this.data
}
}
module.exports = AccountModel;
Run Code Online (Sandbox Code Playgroud)
主要.js:
"use strict";
let AccountModel = require('./AccountModel.js');
let accounts = new AccountModel(5)
accounts.getName()
console.log('Data is %s', accounts.accountsData);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7702 次 |
| 最近记录: |