这可能是一个副本。。但从我看到的答案来看,我并没有得到我想要的东西。。
我只想使用Javascript将一个特定的变量保存到本地文件中。我知道如何阅读文件。
我写了这个代码。。
<script>
var fs = require('fs');
fs.writeFile('http://localhost/online/hello.txt', 'Hello Node', function (err) {
if (err) throw err;
else
{
console.log('It's saved!');
}
});
</script>
这里的错误是什么。。还是有一种简单直接的方法。。??
您似乎正在尝试从浏览器调用node-js代码。尽管javascript既可以在浏览器中运行,也可以在服务器(node-js)上运行,但它们是独立的系统。
你可以做的另一件事是谷歌"HTML保存文件示例",看看这通常是如何实现的-通过为用户打开保存对话框,获得他/她的权限,等等(否则任何网站都可以将任何文件写入你的计算机…)。
您正在为客户端应用程序编写NodeJS
代码。您必须了解浏览器上的javascript
和NodeJS平台上的javascript
之间的区别。
Javascript
是一种类似于C
、Java
和Python
的语言
V8
是运行javascript
应用程序的javascript引擎。它类似于Java的JRE
。
Browser
(仅Chrome)使用V8
引擎运行javascript应用程序。其他浏览器使用不同的javascript引擎。五年前,javascript只能在browser
上工作的可能性只有一种。不能将javascript
用于C
和Java
等应用程序编程
NodeJS
是一个使用V8
使开发人员能够像C
、Java
程序一样编写javascript应用程序的平台。NodeJS还内置了一些用于访问文件系统的库,网络以及更多的实用程序。NodeJS中的一个内部库是fs
。它只适用于NodeJS
应用程序,不适用于浏览器应用程序。
这可以非常简单地使用jrpc oo来完成。jrpc-o使用JRPC2协议链接浏览器和nodejs。jrpcoo通过jrpc抽象类,以便任何一方(nodejs或浏览器)都可以相互调用。
我在这里设置了一个示例repo。使用writeToFile栏。我将在这里分解出重要的部分。
首先在nodejs中,我们编写了一个类,该类具有将输入参数写入文件的方法。该方法看起来是这样的(来自文件TestClass.js):
const fs = require('fs');
class TestClass {
writeToFile(arg){
fs.writeFileSync('/tmp/browser.json',JSON.stringify(arg));
}
}
在浏览器中,我们从jrpc oo类JRPCClient继承并调用服务器类TestClass和方法writeToFile,如下所示(来自src/LitJRPC.js文件):
import {JRPCClient} from '@flatmax/jrpc-oo/jrpc-client.js';
export class LitJRPC extends JRPCClient {
writeObjToFile(){
// create the argument we want to save to file
let dat={name:'var',value:10};
// Ask the server to execute TestClass.writeToFile with args dat
this.server['TestClass.writeToFile'](dat);
}
}
最后,我们运行nodejs应用程序和web开发服务器,查看浏览器控制台和nodejs控制台,看看发生了什么。您将看到浏览器变量dat保存到文件/tmp/browser.json 中
由于我们使用的是jrpc的安全websocket,您需要生成证书并使用浏览器清除证书,然后应用程序才能工作。如果你不想担心安全性,那么就不要使用安全的websocket。有关设置和用法的更多信息,请阅读参考回购中的自述文件。