0

我有一个用作服务器模型的文件,导入所有其他服务并导出它们,所以我只需要在其他文件中进行一次导入,如下所示:

import * as User from './user.js';
import * as Service from './service.js';

export { User, Service };

现在,这些服务中的每一个都只是简单地导出一些常量。像这样:

export const registeredUsers = [

]

我想实现在其他文件中使用类似 Server.User.registeredUsers 的东西。这有点工作,我的组件像这样导入服务器:

import * as Server from '../../mockup/server.js';

旁注:我正在使用 PWA-Starter-Kit:https ://github.com/Polymer/pwa-starter-kit

现在我遇到以下有问题的情况:

我正在将 * 作为 Server 导入,如上所示,生成的 Object 有时具有默认属性。这意味着有时我必须访问 Server.User,有时又必须访问 Server.default.User。这似乎完全是随机的。

我做了一个这样的解决方法:

let User = Server.User || Server.default.User;

这将永远有效。但这有点hacky,因为行为似乎不可预测。我想调整一下。这里可能是什么问题,我该如何解决?

我已经尝试将 server.js 中的导出定义为默认值。

服务器.js

import * as User from './user.js';
import * as Service from './service.js';

export default { User, Service };

并像这样导入:

import Server from '../../mockup/server.js';

导致同样的问题。

对我来说这是一个非常有趣的问题,可能是什么原因?何时使用 Server.default.User 和 Server.User 是绝对随机的。我可以继续刷新页面,它会不时改变其行为(有时在每次刷新时,有时仅在 3 次或更多次之后)。

无论如何,我可能不会真正将这个巨大的导入/导出文件用于生产,但我仍然想解决这个问题。为了好奇。

编辑:

console.log(Server);
console.log(Server.Service);

导致:

非默认

或者:

默认

4

1 回答 1

0

上述问题是由于动态导入错误造成的。在我的项目的其他地方,我有两个动态导入,其中一个是另一个的父级。上面描述的“随机”发生是第一个或第二个导入是否赢得比赛的结果(尽管为什么它会导致它这样做的方式让我感到困惑)。

这意味着我必须确保 import1 在 import2 之前出现,我只是用

await import('dynamic import1');

这解决了上面的问题。

也许这会帮助其他人偶然发现这个问题。

于 2018-07-27T12:01:25.040 回答