Node.js 如何浏览WebWorkers中使用的独立模块

Node.js 如何浏览WebWorkers中使用的独立模块,node.js,gruntjs,web-worker,browserify,lodash,Node.js,Gruntjs,Web Worker,Browserify,Lodash,我正在使用browserify创建独立的模块,我可以在node.js和浏览器的客户端中使用这些模块。我不在整个应用程序上使用browserify,只在几个单节点模块上使用 我会在全局var\uu下浏览填隙片,例如lodash。 除了在webworkers中使用模块外,这种方法工作得非常好 问题是: 当我将lodash填充为\uu时,浏览器系列化的代码将设置var=window.\u, 但是windows没有在web workers内部定义 我的设置 我使用grunt进行browserify,并在

我正在使用browserify创建独立的模块,我可以在node.js和浏览器的客户端中使用这些模块。我不在整个应用程序上使用browserify,只在几个单节点模块上使用

我会在全局
var
\uu
下浏览填隙片,例如
lodash
。 除了在webworkers中使用模块外,这种方法工作得非常好

问题是:

当我将
lodash
填充为
\uu
时,浏览器系列化的代码将设置
var=window.\u
, 但是windows没有在web workers内部定义

我的设置

我使用grunt进行browserify,并在我的package.json中配置了browserify垫片

map.js:(commonJS模块,直接用于node.js)

grunfile.js:

package.json:(部分)

输出

browserify生成的输出如下所示:

注第2行:
var(窗口)

这是一个网络工作者的问题


我是做错了,还是应该只在正常浏览模式下工作?

我知道这是一篇老文章,但我正在分享我找到的解决方案,因为我花了几个小时才找到解决方案

我设法让web workers以模块的形式运行,使用 它可以通过npm安装webworkify获得

我必须在web worker中执行的一项任务是将xml字符串解析为javascript,这是我使用xmldoc时所做的,因为xmldoc不需要DOM,web worker中也没有DOM


我在我的web worker with require中包含xmldoc,这与lodash相同。

为了给出一个好的答案,您应该提供一个代码示例,说明如何使用webworkify解决问题。
var _ = require('lodash-node');

module.exports = _.map;
// Browserify
grunt.loadNpmTasks('grunt-browserify');

grunt.initConfig({
    browserify: {
        'map': {
            options: {
                bundleOptions: {
                    standalone: 'MapModule'
                }
            },
            src: ['./map.js'],
            dest: './output/map-module.js'
        }
    }
});

grunt.registerTask('default', [
    'browserify'
]);
{
    "name": "APP NAME",
    "version": "0.0.0",
    "description": "",
    "main": "app.js",
    "browserify": {
        "transform": [
            "browserify-shim"
        ]
    },
    "browserify-shim": {
        "lodash-node": "global:_"
    },
}