每次导入时执行的 ES6 模块代码
ES6 module code executed every time it is imported
ES6模块中的代码是不是每次import一个模块都会执行?我正在使用 webpack,它似乎正是这样做的。
// FormStore.js
import sessionActions from "../../session/actions/session";
// session.spec.js
import sessionActions from "../../../src/session/actions/session";
This causes the code in the session module to be executed twice
我不知道确切的答案,但我怀疑这与业力有关。我认为这是由于有两个不同的捆绑包。
在karma.config
preprocessors: {
"client/specs/index.ts": ["webpack"],
"client/specs/**/*spec.ts": ["webpack"]
},
webpack: {
entry: {
index: "./client/src/index.tsx",
vendor: []
}
},
基本上,我真的不需要添加 index
入口点,因为这可能会创建一个额外的包。
您希望您的代码在导入时执行吗?如果在您的 /session/actions/session 文件中有一个函数调用被导出而不是函数声明,那么它会在您创建的任何包中导入时被调用。您可以在不同的文件中导入不同的模块。
如果您正在使用 karma-webpack
usage
告诉你
webpack: {
// karma watches the test entry points
// (you don't need to specify the entry option)
// webpack watches dependencies
// webpack configuration
},
一位同事今天遇到了同样的问题 - 这个问题似乎是由两次导入一个包引起的,但每次导入都使用不同的路径引用该包。您似乎在做同样的事情:
// FormStore.js
import sessionActions from "../../session/actions/session"; // note first path
// session.spec.js
import sessionActions from "../../../src/session/actions/session"; // note second path, which is different from first
session.spec.js中的导入是否可以使用相同的路径导入?如果由于文件的相对位置这不是一个选项,你可以配置你的模块加载器,以便 sessionActions 是别名(使用 map
或 path
,例如)。但是,我不确定这是否适合您的环境。
参见:
https://github.com/systemjs/systemjs/blob/master/docs/config-api.md#map
了解如何使用 system.js
执行此操作
ES6模块中的代码是不是每次import一个模块都会执行?我正在使用 webpack,它似乎正是这样做的。
// FormStore.js
import sessionActions from "../../session/actions/session";
// session.spec.js
import sessionActions from "../../../src/session/actions/session";
This causes the code in the session module to be executed twice
我不知道确切的答案,但我怀疑这与业力有关。我认为这是由于有两个不同的捆绑包。
在karma.config
preprocessors: {
"client/specs/index.ts": ["webpack"],
"client/specs/**/*spec.ts": ["webpack"]
},
webpack: {
entry: {
index: "./client/src/index.tsx",
vendor: []
}
},
基本上,我真的不需要添加 index
入口点,因为这可能会创建一个额外的包。
您希望您的代码在导入时执行吗?如果在您的 /session/actions/session 文件中有一个函数调用被导出而不是函数声明,那么它会在您创建的任何包中导入时被调用。您可以在不同的文件中导入不同的模块。
如果您正在使用 karma-webpack usage
告诉你
webpack: {
// karma watches the test entry points
// (you don't need to specify the entry option)
// webpack watches dependencies
// webpack configuration
},
一位同事今天遇到了同样的问题 - 这个问题似乎是由两次导入一个包引起的,但每次导入都使用不同的路径引用该包。您似乎在做同样的事情:
// FormStore.js
import sessionActions from "../../session/actions/session"; // note first path
// session.spec.js
import sessionActions from "../../../src/session/actions/session"; // note second path, which is different from first
session.spec.js中的导入是否可以使用相同的路径导入?如果由于文件的相对位置这不是一个选项,你可以配置你的模块加载器,以便 sessionActions 是别名(使用 map
或 path
,例如)。但是,我不确定这是否适合您的环境。
参见: https://github.com/systemjs/systemjs/blob/master/docs/config-api.md#map 了解如何使用 system.js
执行此操作