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

问题描述

我正在尝试将简单的对象变量从服务器端JS文件导出到客户端JS文件。在服务器端文件中,我正在做一些网络爬虫,最终导致一个简单的对象变量。我希望在客户端文件中能够访问该变量。

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

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

服务器端文件

const module = require('random_module');

let myVar = {
  firstName: "John",lastName: "Doe"
}
    
export { myVar };

客户端文件

import { myVar } from 'server-side.js';

console.log(myVar);

在上面的示例中,require语句禁止导入/导出工作。如果我删除该行,它将起作用。但是,我不能简单地删除require语句,因为这些在我的代码中是必需的。我当然可以将我的网络抓取工具输出到JSON文件,然后从中读取,但这似乎很冗长。

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

尽管我的显式export语句以简单的对象变量为目标,但为什么客户端文件仍尝试读取整个服务器文件?我该如何解决这个问题?

谢谢。

解决方法

尽管我的显式export语句以简单的对象变量为目标,但为什么客户端文件仍尝试读取整个服务器文件?

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

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

如果导入模块,则导入模块。解构操作是在模块导出的整个对象上完成的。


如果您输出的是数据而不是 code ,请不要使用模块。让浏览器使用Ajax请求JSON。您无需更改网络抓取工具,因此它可以以不同的方式输出数据。您可以在服务器中编写一个Web服务端点,以导入已经拥有的模块并使其中的数据可用。

,

替换此-

let myVar = {
  firstName: "John",lastName: "Doe"
}

有了这个-

export let myVar = {
  firstName: "John",lastName: "Doe"
}

然后它将起作用。如果您认为这很有用,请检查答案旁边的箭头。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...