相关疑难解决方法(0)

node.js是否与浏览器中的window对象等效

我的意思是node.js的对象是全局函数方法.在浏览器中像这样:

function myGlobalFunction() {
    console.log(this === window);
}
myGlobalFunction();

=> true
Run Code Online (Sandbox Code Playgroud)

javascript node.js

50
推荐指数
2
解决办法
3万
查看次数

Webpack:Webworker 和 Web 代码之间共享代码的通用块?

我的浏览器应用程序的 Web 和 Web Worker 部分之间共享了大量代码。

我怎样才能告诉 webpack 将我的代码分成公共块,以便保证结果 100% 工作?

在我告诉 webpack 生成公共块(它确实做了)之后,webworker 代码中断(在运行时失败)。即使在我修复了微不足道的“窗口未定义”错误之后,工作人员也什么都不做。

我相信这与 webpack 的“目标”选项有关,默认情况下该选项设置为“web”。但我需要“网络”目标,因为我没有纯粹的网络工作者代码。

我也不能做多个 webpack 配置,因为我不能用多个配置做常见的块...

我该怎么办?

如果有人感兴趣:我正在尝试为我的应用程序构建一个最小尺寸的构建,其中包括 monaco 编辑器(提供工作人员):

https://github.com/Microsoft/monaco-editor/blob/master/docs/integrate-esm.md

您可以在这里(在页面底部)看到入口点由 1 个主入口文件 + 工人组成。

由于我使用的重复代码,目前至少浪费了 6 MB,并且由于这个问题目前无法拆分。那是很多浪费的流量。

有任何想法吗?:)

我的 webpack 4.1.1 配置基本上是:

module.exports = (env, options) => {
    const mode = options.mode;
    const isProduction = mode === 'production';
    const outDir = isProduction ? 'build/release' : 'build/debug';

    return {

        entry: {
            "app": "./src/main.tsx",
            "editor.worker": 'monaco-editor/esm/vs/editor/editor.worker.js',
            "ts.worker": 'monaco-editor/esm/vs/language/typescript/ts.worker.js'
        },
        output: {
            filename: "[name].bundle.js",
            path: `${__dirname}/${outDir}`, …
Run Code Online (Sandbox Code Playgroud)

javascript bundle web-worker webpack code-splitting

5
推荐指数
1
解决办法
2700
查看次数

使用webpack和lodash捆绑依赖库

我在这里需要帮助。我捆绑了一个自定义库(以示例LibraryJS命名,它使用lodash作为依赖项。

在webpack配置中,我将lodash设置为外部依赖项,如下所示:

{
   externals: {
       "lodash"
   }
}
Run Code Online (Sandbox Code Playgroud)

效果很好。但是,当我想在另一个项目中使用该库时,出现以下错误:“ libraryjs.js:77 Uncaught ReferenceError:未定义lodash

这是以下行:

/***/ }),
/* 1 */
/***/ (function(module, exports) {

=> module.exports = lodash;

/***/ }),
Run Code Online (Sandbox Code Playgroud)

事实是,我在项目中也使用lodash,因此它应该可以正常工作。我究竟做错了什么?

顺便说一句,我正在使用gulp + browserify捆绑我的项目,并使用gulp + gulp-webpack捆绑了图书馆。

编辑:我找到了一种修复错误的方法,但我真的不想坚持使用此修复程序,因为它的确是...丑陋的。

const lodash = require('lodash')
window.lodash = lodash; // <= The fix, ugh
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助!

javascript lodash gulp webpack

3
推荐指数
1
解决办法
2137
查看次数