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

网页包加密:无法导入本地依赖项

  •  3
  • Martin  · 技术社区  · 7 年前

    我想为一个JS文件添加一个条目,该条目又会导入其他几个JS文件。

    然而,当我运行encore时,我得到一个“未找到此依赖项”错误。

    网页包。配置。js公司

    ...
    
    .addEntry('app', './theme/js/scripts.js')
    
    ...
    

    ./主题/js/脚本。js公司

    import * as Site from 'Site'
    
    $(() => {
      Site.run()
    })
    

    ./主题/es/站点。js公司

    import $ from 'jquery';
    import Base from 'Base';
    import Menubar from 'Menubar';
    import Sidebar from 'Sidebar';
    import PageAside from 'PageAside';
    
    ... more code
    

    我得到的错误是

    找不到此依赖项:

    • 站点位于/主题/js/脚本。js公司

    要安装它,可以运行:npm install--save Site

    我不认为它可以“安装”,因为这是一个依赖关系,这是我的主题的一部分。

    很遗憾,我无法更改中任何文件中的代码/主题 所以我想知道是否有一种方法可以在网页包Encore中加载依赖项?

    在传统的网页配置中,我会执行以下操作:

    module.exports = {
      resolve: {
        extensions: ['.js'],
        alias: {
          Base: path.resolve(config.scripts.source, 'Base.js'),
          Site: path.resolve(config.scripts.source, 'Site.js'),
          ....
        }
      },
    

    但我如何才能导入这些网页包安可?

    2 回复  |  直到 7 年前
        1
  •  3
  •   Martin    7 年前

    目前,webpack encore似乎没有提供任何语法来添加助手函数。

    根据此处的评论 https://github.com/symfony/webpack-encore/issues/37 解决方案如下:

    网页包。配置。js公司

    let config = Encore.getWebpackConfig();
    
    config.resolve = {
        extensions: ['.js'],
        alias: {
            Base: path.resolve(__dirname, './remark/es/Base.js'),
            Site: path.resolve(__dirname, './remark/es/Site.js'),
            ...
        }
    };
    
    // export the final configuration
    module.exports = config;
    
        2
  •  1
  •   user14098192    4 年前

    在ES6中,您可以使用模块。 解决方案是利用ES6的语法、导入和导出语句,这是一种优雅且可维护的方法,允许我们将事情分开,并且仅在需要时可用。