Tìm kiếm trang web

angular - Angular5 + Electron + Sqlite3


Trong vài ngày qua tôi đang cố gắng tích hợp ứng dụng electron của mình với sqlite. Tôi đã tạo bản build của sqlite bằng script sau:

"rebuild": "electron-rebuild -f -w sqlite3"

và tôi có thể kết nối với cơ sở dữ liệu, tạo tệp db nhưng từ JavaScript như sau:

 var sqlite3 = require('sqlite3').verbose();
            var db = new sqlite3.Database('./database2.sqllite3');

            db.serialize(function() {
            db.run("CREATE TABLE lorem (info TEXT)");

            var stmt = db.prepare("INSERT INTO lorem VALUES (?)");
            for (var i = 0; i < 10; i++) {
                stmt.run("Ipsum " + i);
            }
            stmt.finalize();

            db.each("SELECT rowid AS id, info FROM lorem", function(err, row) {
                console.log(row.id + ": " + row.info);
            });
            });

     db.close();

Nhưng vì tôi đang sử dụng phương pháp component, tôi muốn tạo dịch vụ TypeScript riêng biệt để cung cấp tất cả chức năng cơ sở dữ liệu và làm nó có thể truy cập từ các component TS. Vì vậy, tôi vừa thử chuyển mã này sang TS nhưng nó không hoạt động. Tất cả các ví dụ trên mạng đều nói về việc sử dụng các dòng này trong file js hoặc trong component, nhưng tôi nghĩ rằng trong phiên bản Angular cũ hơn tôi gặp phải lỗi sau:

ERROR in src/app/database.service.ts(19,18): error TS2304: Cannot find name 'require'.

Tôi đã có thể gọi tệp js chuyên dụng từ script ts nhưng với cùng hiệu ứng này. Có vẻ như đã quá muộn để sử dụng require? Có ai đó đã quản lý để làm cho nó hoạt động không?

Đây là cấu hình của tôi

"dependencies": {
    "@angular/animations": "^5.0.1",
    "@angular/common": "^5.0.0",
    "@angular/compiler": "^5.0.0",
    "@angular/core": "^5.0.0",
    "@angular/forms": "^5.0.0",
    "@angular/http": "^5.0.0",
    "@angular/platform-browser": "^5.0.0",
    "@angular/platform-browser-dynamic": "^5.0.0",
    "@angular/router": "^5.0.0",
    "@ngui/datetime-picker": "^0.16.2",
    "@types/lodash": "^4.14.85",
    "angular-svg-round-progressbar": "^1.2.0",
    "bootstrap": "^3.3.7",
    "commonjs": "latest",
    "core-js": "^2.4.1",
    "electron": "^1.8.1",
    "rxjs": "^5.5.2",
    "sqlite3": "^3.1.13",
    "xlsx": "^0.11.8",
    "zone.js": "^0.8.14"
  },
  "devDependencies": {
    "@angular/cli": "1.5.0",
    "@angular/compiler-cli": "^5.0.0",
    "@angular/language-service": "^5.0.0",
    "@types/jasmine": "~2.6.3",
    "@types/jasminewd2": "~2.0.2",
    "@types/node": "~8.0.50",
    "codelyzer": "~4.0.1",
    "electron-rebuild": "^1.6.0",
    "jasmine-core": "^2.8.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~1.7.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-cli": "~1.0.1",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.2.0",
    "ts-node": "~3.3.0",
    "tslint": "~5.8.0",
    "typescript": "~2.6.1"
  }

Trân trọng, Jan