代码之家  ›  专栏  ›  技术社区  ›  petko_stankoski

无法解析“child_进程”

  •  0
  • petko_stankoski  · 技术社区  · 4 年前

    这是我的主要任务。ts文件:

    import { enableProdMode } from '@angular/core';
    import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
    import { environment } from './environments/environment';
    
    if (environment.production) {
      enableProdMode();
    }
    
    const fs = require('fs');
    import * as child from 'child_process';
    
    const components = fs.readdirSync(`src/app`);
    components.forEach(component => compileComponent(component));
    
     function compileComponent(component) {    
        const buildJsFiles = `ng run elements:build --aot --main='MyProject/my-components/src/app/${component}/compile.ts'`;
        const bundleIntoSingleFile = `cat dist/tmp/runtime.js dist/tmp/main.js > dist/tmp/my-${component}.js`;
        const copyBundledComponent = `cp dist/tmp/my-${component}.js dist/components/`;
        child.execSync(`${buildJsFiles} && ${bundleIntoSingleFile} && ${copyBundledComponent}`);
     }
    

    然而,我得到了一个错误:无法解析“child_进程”。

    在我的网页包里。配置。js文件我有:

    externals: { child_process: 'child_process' },
    

    我不用电子。我还试着在包中添加。json:

    "browser":{ "child_process": false }
    

    但它不起作用。

    0 回复  |  直到 4 年前
        1
  •  0
  •   David    4 年前

    Angular代码是针对浏览器客户端编译的,您不能使用 child_process 在浏览器上。因此,我假设webpack没有绑定该库,因此出现了错误。

    添加 "browser":{ "moduleName": false } 指示绑定工具不要为生成绑定模块。这是有用的,例如 crypto 模块,您有一个浏览器API,您希望使用它来代替node js模块。但这并不能为我们提供帮助 child_过程 ,没有浏览器API。