Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将变量从服务器端JS文件导出到客户端JS文件_Javascript_Node.js_Commonjs - Fatal编程技术网

Javascript 将变量从服务器端JS文件导出到客户端JS文件

Javascript 将变量从服务器端JS文件导出到客户端JS文件,javascript,node.js,commonjs,Javascript,Node.js,Commonjs,我正在尝试将一个简单的对象变量从服务器端JS文件导出到客户端JS文件。在服务器端文件中,我正在进行一些web抓取,最终生成一个简单的对象变量。在客户端文件中,我希望能够访问该变量 我发现我确实能够导出一个变量,但是,如果服务器端文件中存在任何commonJS语法(如果我错了,请纠正我),那么它将无法工作。客户端文件将尝试读取整个服务器端文件,包括commonJS语法,但它无法读取 以下代码演示了我的代码和问题: 服务器端文件: const module = require('random_mod

我正在尝试将一个简单的对象变量从服务器端JS文件导出到客户端JS文件。在服务器端文件中,我正在进行一些web抓取,最终生成一个简单的对象变量。在客户端文件中,我希望能够访问该变量

我发现我确实能够导出一个变量,但是,如果服务器端文件中存在任何commonJS语法(如果我错了,请纠正我),那么它将无法工作。客户端文件将尝试读取整个服务器端文件,包括commonJS语法,但它无法读取

以下代码演示了我的代码和问题:

服务器端文件:

const module = require('random_module');

let myVar = {
  firstName: "John",
  lastName: "Doe"
}
    
export { myVar };
import { myVar } from 'server-side.js';

console.log(myVar);
客户端文件:

const module = require('random_module');

let myVar = {
  firstName: "John",
  lastName: "Doe"
}
    
export { myVar };
import { myVar } from 'server-side.js';

console.log(myVar);
在上面的示例中,require语句禁止导入/导出工作。如果我去掉那条线,它就行了。但是,我不能简单地删除require语句,因为我的代码中需要这些语句。我当然可以将我的web scraper输出到一个JSON文件,然后从中读取,但这看起来很冗长

其他人已经解决了在节点和浏览器之间共享代码的问题,例如,但是,我只需要导出一个简单的对象变量,而不是整个模块

为什么尽管我的explicit export语句针对一个简单的对象变量,客户端文件仍试图读取整个服务器端文件?我怎样才能避开这个问题

谢谢。

更换这个-

let myVar = {
  firstName: "John",
  lastName: "Doe"
}
用这个-

export let myVar = {
  firstName: "John",
  lastName: "Doe"
}
那就行了。如果您觉得这有用,请检查答案旁边的箭头

为什么尽管我的explicit export语句针对一个简单的对象变量,客户端文件仍试图读取整个服务器端文件

它必须执行模块中的代码才能得到结果

它无法知道不需要第1行,但需要第3-8行

如果导入模块,则导入模块。对模块导出的整个对象执行分解操作



如果输出的是数据而不是代码,那么就不要使用模块。让浏览器使用Ajax请求JSON。您不需要更改web刮板,使其以不同的方式输出数据。您可以在服务器中编写一个web服务终结点,导入您已有的模块并使其中的数据可用。

不,它不会。浏览器在点击
require
语句时仍将抛出异常。感谢您的贡献。但是,您提供的解决方案导致了相同的错误。