javascript-obfuscator / webpack-obfuscator

javascript-obfuscator plugin for Webpack
https://github.com/javascript-obfuscator/javascript-obfuscator
BSD 2-Clause "Simplified" License
870 stars 82 forks source link

Critical dependency: the request of a dependency is an expression #102

Closed spatack closed 3 years ago

spatack commented 3 years ago

I'm using webpack-obfuscator for vue with webpack4 ,after project bulid it shows some warnings like

WARNING in ./src/router/Search/index.js 1:401-425 Critical dependency: the request of a dependency is an expression @ ./src/router/routes.js @ ./src/router/index.js @ ./src/index.js @ multi core-js/modules/es.promise core-js/modules/es.array.iterator @/index.js

The router code

const Search = () =>import("@/views/Search")

const routes=[
  {
    path: "/search",
    name:'Search',
    component:Search
  }
]

export default routes

webpack config

entry: [
    "core-js/modules/es.promise",
    "core-js/modules/es.array.iterator",
    '@/index.js'
  ],
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: "js/[name][hash:5].js",
    publicPath: "/"
  },
  optimization: {
    splitChunks: {
      cacheGroups: {
        vendors: {
          test: /[\\/]node_modules[\\/]/,
          chunks: 'initial',
          name: 'vendors',
        },
        'async-vendors': {
          test: /[\\/]node_modules[\\/]/,
          minChunks: 2,
          chunks: 'async',
          name: 'async-vendors'
        }
      }
    },
    runtimeChunk: {name: 'manifest'}
  },

  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'Axios': path.resolve(__dirname, 'src/utils/axios.js'),
      '@': path.resolve(__dirname, 'src')
    }
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        enforce: 'post',
        exclude: /node_modules/,
        use: [{
          loader: WebpackObfuscator.loader,
          options: {
            rotateStringArray: true,
            ignoreRequireImports: false
          }},'babel-loader']
      }
sanex3339 commented 3 years ago

You can use ignoreRequireImports: false option