我有一个名为product的节点模块,该模块使用knex.js和sqlite3,在节点上运行良好。现在,我试图通过使用browserify在浏览器上运行它,方法是在HTML中包含由browserify生成的bundle js文件,如下所示
<script src="product.bundle.js"></script>
以下是节点和npm版本:
Node: 12.18.0
npm: 6.13.7
Package.json:
{
"name": "product",
"version": "1.0.0",
"description": "knexjs sample module",
"main": "product.js",
"dependencies": {
"knex": "^0.21.1",
"sqlite3": "^4.2.0",
"browserify": "^16.5.1"
}
}
product.js
const sqlite = require( 'sqlite3' )
const knex = require('knex')({
client: 'sqlite3',
connection: {
filename: "./mysqlitedb.sqlite"
}
});
module.exports = {
init: function(){
knex.schema.createTable('products', (table) => {
table.increments('id')
table.string('code')
table.string('description')
table.string('price')
}).then(() => console.log("table created"))
.catch((err) => { console.log(err); throw err })
.finally(() => {
knex.destroy();
});
},
insertIntoProductsTable: function(){
const products = [
{ code: 'Product code 1', description:'Product desc 1', price: '11.00' }
]
knex('products').insert(products).then(() => console.log("data inserted"))
.catch((err) => { console.log(err); throw err })
.finally(() => {
knex.destroy();
});
},
getAllProducts: function(){
knex.raw( 'select * from products' )
.then( function( products ){
console.log( products )
})
.catch( function( err ){
console.log( err )
})
.finally(() => {
knex.destroy();
});
}
}
使用命令“ browserify product.js -o product.bundle.js”获得product.bundle.js文件。 当尝试在浏览器上加载该文件时,出现以下错误:
请让我知道,如果我丢失了任何东西,或者是否有任何链接可以检查是否实现了类似的功能?
提前谢谢。
答案 0 :(得分:0)
您的错误告诉您stream
模块(通常存在于节点环境中)在浏览器环境中不存在。对于许多节点先决条件(例如fs
),这是正确的。 SQLite3还具有本地编译代码组件,该组件肯定不会在浏览器中运行。最好将数据存储在服务器上,或者使用其他技术进行本地存储。