【发布时间】:2017-10-02 15:41:45
【问题描述】:
我正在使用 sqlite 作为其数据源创建一个带有环回离线同步的 cordova 应用程序。这是我的代码:
lbclient\datasources.json:
{
"remote": {
"connector": "remote"
},
"sqlite": {
"connector": "sqlite",
"location": "default",
"file_name": "sqlite.sqlite3",
"debug": false
}
}
lbclient\lbclient.js:
'use strict';
var loopback = require('loopback');
var boot = require('loopback-boot');
var client = module.exports = loopback();
if (client.connectorRegistry) {
console.log(client.connectorRegistry);
}
client.connector('sqlite', require('loopback-connector-cordova-sqlite'));
boot(client);
在我的 browser.bundle.js 上,我注意到 try 块被执行了两次
app.dataSource = function(name, config) {
try {
var ds = dataSourcesFromConfig(name, config, this.connectors, this.registry);
this.dataSources[name] =
this.dataSources[classify(name)] =
this.dataSources[camelize(name)] = ds;
ds.app = this;
return ds;
} catch (err) {
if (err.message) {
err.message = g.f('Cannot create data source %s: %s',
JSON.stringify(name), err.message);
}
throw err;
}
};
这是 dataSourcesFromConfig:
function dataSourcesFromConfig(name, config, connectorRegistry, registry) {
var connectorPath;
assert(typeof config === 'object',
'can not create data source without config object');
if (typeof config.connector === 'string') {
name = config.connector;
if (connectorRegistry[name]) {
config.connector = connectorRegistry[name];
} else {
connectorPath = path.join(__dirname, 'connectors', name + '.js');
if (fs.existsSync(connectorPath)) {
config.connector = require(connectorPath);
}
}
if (config.connector && typeof config.connector === 'object' && !config.connector.name)
config.connector.name = name;
}
return registry.createDataSource(config);
}
在第一次运行 dataSourcesFromConfig 时,db (sqlite) 初始化得很好,但在第二次运行时,我现在收到错误:
browser.bundle.js:93172 Uncaught TypeError: Cannot create data source "sqlite": fs.existsSync is not a function
为什么我会遇到这种情况?你能帮我么。太感谢了。
【问题讨论】:
标签: node.js sqlite cordova loopbackjs