javascript - 在服务器和客户端之间访问 JS 文件中的变量
问题描述
我有一个 JS 文件parameters.js
,如下所示:
const myJSON = {
parameter1: 2,
parameter2: 2.
}
module.exports = {myJSON}
在server.js
我可以通过以下方式访问它:
const {myJSON} = require('./public/js/parameters.js');
现在在我的客户中,我也想访问myJSON
. 但这似乎不可能。
索引.html:
<head>
<script src='clientScript.js' type="module"></script>
</head>
<body>
...
</body>
客户端脚本.js:
import {myJSON} from './parameters.js';
// ...
这在服务器端加载正常,但在客户端我收到错误:
Uncaught SyntaxError: The requested module './parameters.js' does not provide an export named 'myJSON'
.
当我尝试将module.exports
parameters.js 中的语法更改为 时export {myJSON}
,它会在客户端正常加载,但在服务器端却出现错误SyntaxError: Unexpected token 'export'
。
那么在客户端和服务器之间共享这个变量的最佳方式是什么?
解决方案
您正在混合您的模块系统。
Node.js 支持 CommonJS 和 ECMAScript 模块。浏览器仅支持 ECMAScript 模块。
所以使用import
and export
(不要使用require
and module.exports
)。
这将在浏览器中正常工作(请记住,您必须使用模块的 URL 并且不能使用不需要文件扩展名的 Node.js 解析系统)。
在 Node.js 中,您需要显式启用 ECMAScript 模块或使用Babel将它们转换为 CommonJS 。
推荐阅读
- javascript - 如何处理ajax调用中耗时的后端任务
- android - 带有 Android Go 10 的 Altbeacon
- excel - 当用户窗体中的组合框值更改时重新运行宏
- flutter - Flutter/Dart - 未处理的异常:MissingPluginException
- python - 尝试附加 for 循环时出现 IndexError
- passport.js - 如何将不同的 Passport 策略重构为自己的文件
- reactjs - 我无法使用 REACT 实现 DJANGO REST API
- c - 使用 ubunto 编译 C 源代码时何时使用 -std=c11
- android - 无法在真实设备中安装签名的 apk(离子科尔多瓦)
- python - 在python中的二进制图像中围绕多个对象绘制边界矩形