Tob*_*rds 2 sqlite relative-path node.js
我想.db在我的 node.js 项目中包含一个与 sqlite3 一起使用的数据库文件。当不同目录中的文件需要打开数据库连接的模块时,就会出现我的问题。
我的项目结构是这样的:
project/
|--lib/
| |--foo.js
| `--bar.js
|--db/
| `--database.db
`--server.js
Run Code Online (Sandbox Code Playgroud)
我的foo.js文件包含打开数据库,如下所示:
var sqlite3 = require('sqlite3');
var db = new sqlite3.Database('db/database.db');
module.exports = {
foo: function() {
db.serialize(function() { /* Do database things */ });
}
};
Run Code Online (Sandbox Code Playgroud)
当文件foo.js需要时,这一切正常,server.js如下所示:
var foo = require('./lib/foo');
Run Code Online (Sandbox Code Playgroud)
但是当lib目录中的文件需要时它不起作用,bar.js.
var foo = require('./foo');
Run Code Online (Sandbox Code Playgroud)
我认为这是因为当这个文件从lib目录启动时,.db文件实际上应该是../db/database.db.
我该如何解决这个问题,我该怎么办?
在不同脚本中使用函数时,当前目录的概念有所sqlite3.Database不同。它按照这一行sqlite3 源代码中的设计工作。
所以每次使用时都应该明确指定当前目录。根据您的项目布局,数据库文件的正确路径lib/foo.js是
var path = require('path')
// specify current directory explicitly
var db = new sqlite3.Database(path.join(__dirname, '..', 'db', 'database.db'));
Run Code Online (Sandbox Code Playgroud)
然后它可以在任何需要的地方工作foo.js。
| 归档时间: |
|
| 查看次数: |
2064 次 |
| 最近记录: |