首页 > 解决方案 > 在服务器和客户端之间访问 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.exportsparameters.js 中的语法更改为 时export {myJSON},它会在客户端正常加载,但在服务器端却出现错误SyntaxError: Unexpected token 'export'

那么在客户端和服务器之间共享这个变量的最佳方式是什么?

标签: javascriptnode.js

解决方案


您正在混合您的模块系统。

Node.js 支持 CommonJS 和 ECMAScript 模块。浏览器仅支持 ECMAScript 模块。

所以使用importand export(不要使用requireand module.exports)。

这将在浏览器中正常工作(请记住,您必须使用模块的 URL 并且不能使用不需要文件扩展名的 Node.js 解析系统)。

在 Node.js 中,您需要显式启用 ECMAScript 模块或使用Babel将它们转换为 CommonJS 。


推荐阅读