在Polymer PWA Starter Kit中以随机行为导出JavaScript导入

时间:2018-07-27 08:47:28

标签: javascript polymer babel static-import

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

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.User,有时还必须访问Server.default.User。这似乎是完全随机的。

我做了这样的解决方法:

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

这将始终有效。但这有点骇人听闻,因为这种行为似乎不可预测。我想调整一下。这里可能是什么问题,我该如何解决?

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

server.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);

结果:

non-default

或:

default

1 个答案:

答案 0 :(得分:0)

上述问题是由于动态导入错误而导致的。在项目的其他地方,我有两个动态导入,其中一个是另一个的父项。上面描述的“随机”事件是第一批或第二批进口产品赢得比赛的结果(尽管为什么如此导致这种情况令人困惑)。

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

解决了
await import('dynamic import1');

这解决了上面的问题。

也许这将有助于其他人在此问题上绊脚石。