在浏览器中-单击按钮我想从节点“myFunction”触发功能
我试过browsify但什么也没发生。
在本地主机(wamp)服务器上测试,它工作正常
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Title</title>
</head>
<body>
<p>
Input the order of the matrix
<br />
<input type="text" maxlength="3" name="value" id='valuee' value='5'/>
</p>
<button id="myButton">Click me!</button>
</body>
<script type="text/javascript" src="bundle.js"></script>
</html>
index.js(在节点终端中工作的变体)
const fs = require('fs')
const csv = require('fast-csv')
const fpcalc = require('fpcalc');
const express = require('express');
//if (typeof window !== 'undefined') {
function readDb(dbName = 'db.csv') {
// read JSON object from file
const data = fs.readFileSync(dbName, 'utf8')
return JSON.parse(data)
}
function writeDb(obj, dbName = 'db.csv') {
if (!obj) return console.log('Please provide data to save')
try {
fs.writeFileSync(dbName, JSON.stringify(obj))
return console.log('SAVE SUCESS')
} catch (err) {
return console.log('FAILED TO WRITE')
}
}
//window.myFunction = () => {
const dataObj = {james:'144114'}
writeDb(dataObj)
module.exports = { readDb, writeDb }
console.log('You are on the browser');
//}
//}
//else {
// console.log('You are on the server');
// }
如果我取消注释 myFunction(从上面) 并在节点中执行操作:browserify index.js > bundle.js
我在访问 localhost/index.html 时得到
**
myFunction it`s not defined** in browser console
任何解决方案?...提前致谢
注意browserify的输出。
[ jdkfjskdfjdkfjkdjfkd ] ➜ npx browserify index.js > bundle.js
错误:无法遍历依赖图:ENOENT:没有这样的文件或目录, lstat '/REDACTED/jdkfjskdfjdkfjkdjfkd/async_hooks'
/REDACTED/jdkfjskdfjdkfjkdjfkd/node_modules/on-finished/index.js 需要
它抛出错误并生成一个emptybundle.js文件。
fs
模块内置于 Node.js 中。它不能捆绑。它做了浏览器不允许 JavaScript 做的事情。您无法在浏览器中运行您编写的代码。
express
模块依赖于具有相同限制的功能,也不能捆绑。
(我不打算分析
fpcalc
和fast-csv
看他们是否也这样做)。
你没有使用
express
所以你可以从你的脚本中删除它。
您可以将
fs
替换为替代方案(例如将数据保存在 localStorage 中或使用 <input type="file">
和 FileReader
加载文件并通过生成 data:
方案 URL 并使用 <a download href="data:...">
来编写它们),然后是您的脚本可能在浏览器中运行。