包含文件时node.js上的引用错误

时间:2016-04-05 04:11:45

标签: mysql node.js

我是node.js的新手。我有两个文件。它们是index.jsdb.js

我的index.js

var connection = require('./db.js');

device = new Device({
    id: 93,
    name: 'test1'
});

device.save();

我的db.js

var mysql      = require('mysql2');
var mysqlModel = require('mysql-model');

var appModel = mysqlModel.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : 'root',
  database : 'db',
}); 

var Device = appModel.extend({
    tableName: "DeviceTable",
});

这里我在运行节点index.js 时获得了error

  

device = new Device({

            ^
     

ReferenceError:未定义设备。

但将以下内容插入db.js本身。它工作正常。它执行insert

var mysql      = require('mysql2');
var mysqlModel = require('mysql-model');

var appModel = mysqlModel.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : 'root',
  database : 'db',
}); 

var Device = appModel.extend({
    tableName: "DeviceTable",
});

var device = new Device({
    id: 93,
    name: 'test1'
});

device.save();

为什么我收到错误?

2 个答案:

答案 0 :(得分:4)

如果您希望db模块中的某些内容可以在其他模块中访问,则需要使用module.exports

公开它

添加到db.js文件的末尾:

module.exports = {
  appModel : appModel,
  Device : Device
};

然后在你的index.js中你可以做到:

device = new connection.Device({
  id: 93,
  name: 'test1'
});

您可以阅读更多相关信息here

答案 1 :(得分:2)

node.js将每个文件视为一个模块。所以要将任何源文件包含到另一个源文件中,您需要在源端导出它并使用导入文件中的require导入它。