如何从 React 应用程序连接到 sqlite 数据库?

slo*_*mes 10 sqlite npm reactjs

我正在尝试使用 Create React App 和 sqlite3 模块构建一个页面。在它们的默认配置中,这两件事似乎并不兼容。我是 React 和 JS 的新手,所以我希望我在这里遗漏了一些明显的东西。

使用 npx v6.9.0 和 Node v12.4.0,我可以通过键入npx create-react-app test, cd test,来重现这一点npm start

到现在为止还挺好。我输入: npm install sqlite3,然后收到一条 npm 警告,提示我应该安装 typescript。好的,我输入npm install typescript。都好。我启动了应用程序,到目前为止它已经编译好了。伟大的!

我打开 App.js,并根据 sqlite3 的自述文件,在import线条下,我输入var sqlite3 = require('sqlite3').verbose();

这可能是我做错了什么。我的应用程序现在无法编译,告诉我:

./node_modules/sqlite3/node_modules/node-pre-gyp/lib/info.js
Module not found: Can't resolve 'aws-sdk' in '/Users/brendanlandis/Desktop/test/node_modules/sqlite3/node_modules/node-pre-gyp/lib'
Run Code Online (Sandbox Code Playgroud)

我尝试npm install aws-sdk,这让我走得更远。我的应用程序仍然无法编译,但现在错误是:

TypeError: stream is undefined
./node_modules/set-blocking/index.js/</module.exports/<
node_modules/set-blocking/index.js:3

  1 | module.exports = function (blocking) {
  2 |   [process.stdout, process.stderr].forEach(function (stream) {
> 3 |     if (stream._handle && stream.isTTY && typeof stream._handle.setBlocking === 'function') {
  4 |       stream._handle.setBlocking(blocking);
  5 |     }
  6 |   });
Run Code Online (Sandbox Code Playgroud)

在谷歌搜索中,我还没有弄清楚我做错了什么。任何帮助,将不胜感激。谢谢!

Cha*_* dB -1

ReactJS 主要是一个前端框架,您应该创建一个后端服务器。

某些NPM包与前端JS应用程序不兼容。

您的反应应用程序将调用服务器,服务器操作数据库事务。例如,您可以使用express js。以下有用的文档:

ExpressJS - SQLite 文档

来自 React 应用程序的 API 请求

  • 对于常见用例,这可能是个好建议。但是存在架构限制,问题中的方法有意义,并且这并不能回答这些情况的问题。 (2认同)