Node.js 我可以在全局命名空间中公开commonjs模块对象吗?
我们正在使用nodejs/webpack构建一个react/flux应用程序,因此我们所有的新代码都是用commonjs模块编写的 在一些孤立的情况下,我们需要从遗留代码中的一个commonjs模块访问对象。有没有办法做到这一点…是的,我想这很恶心。我们最终会将所有代码迁移到commonjs模块,但这只是权宜之计。在遗留JS代码(不使用commonjs)中,在全局命名空间中创建一个函数:Node.js 我可以在全局命名空间中公开commonjs模块对象吗?,node.js,webpack,commonjs,Node.js,Webpack,Commonjs,我们正在使用nodejs/webpack构建一个react/flux应用程序,因此我们所有的新代码都是用commonjs模块编写的 在一些孤立的情况下,我们需要从遗留代码中的一个commonjs模块访问对象。有没有办法做到这一点…是的,我想这很恶心。我们最终会将所有代码迁移到commonjs模块,但这只是权宜之计。在遗留JS代码(不使用commonjs)中,在全局命名空间中创建一个函数: /* Legacy code NOT using CommonJS */ function getCommo
/* Legacy code NOT using CommonJS */
function getCommonJSObject(obj) {
...
}
在CommonJS代码中,您可以测试这个全局函数,如果它存在,则调用它,传递您需要访问的对象
/* CommonJS object */
if(window['getCommonJSObject']){
window.getCommonJSObject(obj);
}
通过这样做,我们仍然可以遵循应用程序中遗留javascript代码的流量模式。如果有更好的方法,请告诉我们。但是这是一个方便的解决方法。使用
window.YourNamespace.YourObject=YourObject代码>就在返回对象之前代码>?嗯,我尝试了window.myObject,但没有成功。我没有试着把它放到一个名称空间中……这会有什么不同吗?我要试一试;那为什么不起作用?怎么了?您可以在CommonJS模块中访问窗口
,这应该不是问题所在。这可能是时间问题。您的代码尝试在执行CommonJS模块之前访问全局对象。