将变量从服务器端 JS 文件导出到客户端 JS 文件
Exporting a variable from server side JS file to client side JS file
我正在尝试将一个简单的对象变量从服务器端 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 语句禁止 import/export 工作。如果我删除那条线,它就可以工作。但是,我不能简单地删除 require 语句,因为我的代码需要这些语句。我当然可以将我的网络抓取工具输出到一个 JSON 文件,然后从中读取,但这看起来很冗长。
其他人已经解决了节点和浏览器之间共享代码的问题,比如这个this post,但是,我只需要导出一个简单的对象变量——而不是整个模块。
为什么客户端文件尝试读取整个服务器端文件,尽管我明确的导出语句针对一个简单的对象变量?我怎样才能避免这个问题?
谢谢。
替换这个-
let myVar = {
firstName: "John",
lastName: "Doe"
}
有了这个-
export let myVar = {
firstName: "John",
lastName: "Doe"
}
然后就可以了。如果您觉得有用,请勾选答案旁边的箭头。
Why does the client side file attempt to read the entire server side file despite my explicit export statement targeting a simple object variable?
必须执行模块中的代码才能得到结果。
它无法知道不需要第 1 行,但需要第 3-8 行。
如果你导入一个模块,你就导入一个模块。对模块导出的整个对象进行解构操作。
如果你正在输出 data 而不是 code 那么不要使用模块。让浏览器请求 JSON 和 Ajax。您不需要更改网络抓取工具,因此它会以不同的方式输出数据。您可以在您的服务器中编写一个 Web 服务端点,以导入您已有的模块并使其中的数据可用。
我正在尝试将一个简单的对象变量从服务器端 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 语句禁止 import/export 工作。如果我删除那条线,它就可以工作。但是,我不能简单地删除 require 语句,因为我的代码需要这些语句。我当然可以将我的网络抓取工具输出到一个 JSON 文件,然后从中读取,但这看起来很冗长。
其他人已经解决了节点和浏览器之间共享代码的问题,比如这个this post,但是,我只需要导出一个简单的对象变量——而不是整个模块。
为什么客户端文件尝试读取整个服务器端文件,尽管我明确的导出语句针对一个简单的对象变量?我怎样才能避免这个问题?
谢谢。
替换这个-
let myVar = {
firstName: "John",
lastName: "Doe"
}
有了这个-
export let myVar = {
firstName: "John",
lastName: "Doe"
}
然后就可以了。如果您觉得有用,请勾选答案旁边的箭头。
Why does the client side file attempt to read the entire server side file despite my explicit export statement targeting a simple object variable?
必须执行模块中的代码才能得到结果。
它无法知道不需要第 1 行,但需要第 3-8 行。
如果你导入一个模块,你就导入一个模块。对模块导出的整个对象进行解构操作。
如果你正在输出 data 而不是 code 那么不要使用模块。让浏览器请求 JSON 和 Ajax。您不需要更改网络抓取工具,因此它会以不同的方式输出数据。您可以在您的服务器中编写一个 Web 服务端点,以导入您已有的模块并使其中的数据可用。