Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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 将多个常量导出为一个json_Javascript - Fatal编程技术网

Javascript 将多个常量导出为一个json

Javascript 将多个常量导出为一个json,javascript,Javascript,我有几个常量文件和一个常量文件夹中的index.js文件 index.js文件 import * as env from "./env.constants"; import * as httpC from "./http.constants"; import * as localStorage from "./localStorage.constants"; import * as routes from "./routes.constants"; const appConstants

我有几个常量文件和一个常量文件夹中的index.js文件

index.js文件

import  * as env from "./env.constants";
import  * as httpC from "./http.constants";
import  * as localStorage from "./localStorage.constants";
import  * as routes from "./routes.constants";

const appConstants =  {
  ...env,
  ...httpC,
  ...localStorage,
  ...routes
};

console.log(appConstants);

export default appConstants;
我的常量文件如下所示

http.constants.js

export const GET = "GET";
export const POST = "POST";
其他文件使用不同的名称进行相同的导出。 index.js的控制台输出是一个json,包含所有常量。

但当我把它们作为

import * as test from "./constants";
  console.log(test);
import * as test from "./constants";
  console.log(test);
我在浏览器中获得以下输出,

我想在单个导入中使用常量

import { GET, LOGIN_URL } from 'constants';
我错过了什么

但当我把它们作为

import * as test from "./constants";
  console.log(test);
import * as test from "./constants";
  console.log(test);
我在浏览器中获得以下输出

这是因为您正在导入模块的模块名称空间对象(这就是
import*
所做的),然后直接输出它

要获取所需的
常量
文件,不要将
导入*为
,然后将它们组合到一个对象中,并将该对象作为默认值导出;相反,只需像这样重新导出它们:

export * from "./env.constants";
export * from "./http.constants";
export * from "./localStorage.constants";
export * from "./routes.constants";
将所有这些模块中的所有命名导出导出为
常量
模块中的命名导出


与Node.js中类似CommonJS的模块系统相比,您试图做的是对JavaScript模块系统的一个相对常见的误解。命名导出是而不是只是默认导出对象上的属性。命名导出是它们自己的第一级内容。如果您这样做:

export default {
    foo: 42
};
…您不能从“/mod”执行
import{foo}来导入它,因为
foo
不是命名的导出,它只是默认导出上的一个属性,默认导出是一个对象


我有几个常量文件和一个常量文件夹中的index.js文件

import { GET, LOGIN_URL } from 'constants';

FWIW依赖于此从
constants
文件夹导入
index.js
文件依赖于Node.js特定的功能,而不是JavaScript模块系统中内置的任何功能。如果您只希望它在Node.js中工作,那很好,但请注意它不是标准的。

“index.js的控制台输出是json…”不,不是。它是一个物体。JSON是用于数据交换的文本表示法。如果您处理的是JavaScript源代码,而不是字符串,那么您就不是在处理JSON。。我不知道这个标准。这是一个项目。所以我应该把常量存储在json文件中,而不是js文件?@BhaskerYadav-不,我不知道你是怎么从上面的答案中得到的。(再说一次:在你的问题或答案中没有JSON。)在JavaScript文件中定义常量是可以的。这就是如何将正在执行此操作的多个模块汇总到单个模块中的方法。