webpack-contrib / thread-loader

Runs the following loaders in a worker pool
MIT License
1.12k stars 69 forks source link

Issues with Less-Loader #10

Closed sresant closed 4 years ago

sresant commented 6 years ago

Are there any known issues with less loader and the thread loader?

I am getting the following error:

Module build failed: TypeError: Cannot read property 'bind' of undefined
at createWebpackLessPlugin (/Users/sresan.thevarajah/code/main/node_modules/less-loader/dist/createWebpackLessPlugin.js:37:49)
at getOptions (/Users/sresan.thevarajah/code/main/node_modules/less-loader/dist/getOptions.js:25:26)
at Object.lessLoader (/Users/sresan.thevarajah/code/main/node_modules/less-loader/dist/index.js:32:42)

What is undefined is the loadModule property.

My usage looks like ExtractTextPlugin.extract({fallback: "style-loader", use: [{loader: "thread-loader" option: { name: "less"}}, "css-loader", "less-loader"]})

I am using two instances of extract text plugin as well.

jgraniero commented 6 years ago

@sresant did you ever resolve this? I'm having the same issue.

Looks like createWebpackLessPlugin is looking for loadModule function on loaderContext, but it doesn't exist. I only see this error when using thread-loader along with webpack's resolver for less-loader. Seems there is a conditional that checks for less-loader's paths option and if it's defined, it doesn't hit the problematic code.

I can create a simple repo that shows the issue if it would help get it solved.

For now, the only workaround I've found is to use less's resolver.

sresant commented 6 years ago

I can't remember if I was able to resolve this, we ended up just sticking with happy-pack.

jtomaszewski commented 6 years ago

@jgraniero's workaround with using paths option works well for us. No need to switching anywhere in that case, thread-loader works fine then.

leohxj commented 5 years ago

same question.

helloworldcyj commented 4 years ago

same question.

duanbaosheng commented 4 years ago

add path option to the less-loader ,like this: { loader: 'less-loader', options: { paths: [ path.resolve(__dirname, "node_modules") ] } }

duanbaosheng commented 4 years ago

@jgraniero's workaround with using paths option works well for us. No need to switching anywhere in that case, thread-loader works fine then.

but there leads new problem : in a less file, i import other less file , when run webpack, error shows: @import '~antd/lib/style/.default.less' is not found I try many methods , but all fail. I do not know how to do

ryansully commented 4 years ago

Since less-loader released 6.0.0, thread-loader is now completely incompatible, because options.paths has moved to lessOptions.paths, and trying to use options.paths results in a compile error.

jerryOnlyZRJ commented 4 years ago

@jgraniero's workaround with using paths option works well for us. No need to switching anywhere in that case, thread-loader works fine then.

but there leads new problem : in a less file, i import other less file , when run webpack, error shows: @import '~antd/lib/style/.default.less' is not found I try many methods , but all fail. I do not know how to do

me too

bfrontend commented 4 years ago

@jgraniero的使用paths选项的解决方法对我们来说效果很好。在这种情况下,无需切换到任何地方,线程加载器就可以正常工作。

但导致新的问题: 在一个较小的文件,我导入其他文件少,运行时的WebPack,错误显示: @import “〜antd / lib目录/风格/ .default.less”没有找到 我尝试了很多方法,但都失败。我不知道该怎么办

我也是

同样的错误

alexander-akait commented 4 years ago

Please update less-loader to latest stable version, feel free to open new issue if you still faced with bug

robothot commented 2 years ago

@alexander-akait

****/node_modules/less-loader/dist/index.js:43
  const logger = this.getLogger("less-loader");
                      ^

TypeError: this.getLogger is not a function
    at Object.lessLoader (***/node_modules/less-loader/dist/index.js:43:23)
    at LOADER_EXECUTION (***/node_modules/loader-runner/lib/LoaderRunner.js:132:14)
    at runSyncOrAsync (***/node_modules/loader-runner/lib/LoaderRunner.js:133:4)
    at iterateNormalLoaders (***/node_modules/loader-runner/lib/LoaderRunner.js:250:2)
    at ***/node_modules/loader-runner/lib/LoaderRunner.js:223:4
    at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3)
***/node_modules/less-loader/dist/index.js:43

webpack config

{
    "test": /\.mless$/,
    "use": [{
        "loader": "thread-loader"
    }, {
        "loader": "css-loader",
        "options": {
            "modules": true
        }
    }, {
        "loader": "less-loader",
        "options": {
            "lessOptions": {
                "javascriptEnabled": true
            }
        }
    }]
}, {
    "test": /\.less$/,
    "use": [{
        "loader": "thread-loader"
    }, {
        "loader": "css-loader"
    }, {
        "loader": "less-loader",
        "options": {
            "lessOptions": {
                "javascriptEnabled": true
            }
            }
        }]
}

There seems to be no way to get the webpack context

huangyingzheng commented 2 years ago

@alexander-akait

  • "less": "^4.1.2",
  • "less-loader": "^10.2.0",
  • "thread-loader": "^3.0.4"
****/node_modules/less-loader/dist/index.js:43
  const logger = this.getLogger("less-loader");
                      ^

TypeError: this.getLogger is not a function
    at Object.lessLoader (***/node_modules/less-loader/dist/index.js:43:23)
    at LOADER_EXECUTION (***/node_modules/loader-runner/lib/LoaderRunner.js:132:14)
    at runSyncOrAsync (***/node_modules/loader-runner/lib/LoaderRunner.js:133:4)
    at iterateNormalLoaders (***/node_modules/loader-runner/lib/LoaderRunner.js:250:2)
    at ***/node_modules/loader-runner/lib/LoaderRunner.js:223:4
    at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3)
***/node_modules/less-loader/dist/index.js:43

webpack config

{
  "test": /\.mless$/,
  "use": [{
      "loader": "thread-loader"
  }, {
      "loader": "css-loader",
      "options": {
          "modules": true
      }
  }, {
      "loader": "less-loader",
      "options": {
          "lessOptions": {
              "javascriptEnabled": true
          }
      }
  }]
}, {
  "test": /\.less$/,
  "use": [{
      "loader": "thread-loader"
  }, {
      "loader": "css-loader"
  }, {
      "loader": "less-loader",
      "options": {
          "lessOptions": {
              "javascriptEnabled": true
          }
          }
        }]
}

There seems to be no way to get the webpack context

same question.

ghost commented 1 year ago

I'm experiencing the same. This would have been very helpful. Hopefully https://github.com/webpack-contrib/thread-loader/pull/130 lands soon

KyrieLii commented 1 year ago

@alexander-akait

  • "less": "^4.1.2",
  • "less-loader": "^10.2.0",
  • "thread-loader": "^3.0.4"
****/node_modules/less-loader/dist/index.js:43
  const logger = this.getLogger("less-loader");
                      ^

TypeError: this.getLogger is not a function
    at Object.lessLoader (***/node_modules/less-loader/dist/index.js:43:23)
    at LOADER_EXECUTION (***/node_modules/loader-runner/lib/LoaderRunner.js:132:14)
    at runSyncOrAsync (***/node_modules/loader-runner/lib/LoaderRunner.js:133:4)
    at iterateNormalLoaders (***/node_modules/loader-runner/lib/LoaderRunner.js:250:2)
    at ***/node_modules/loader-runner/lib/LoaderRunner.js:223:4
    at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3)
***/node_modules/less-loader/dist/index.js:43

webpack config

{
    "test": /\.mless$/,
    "use": [{
        "loader": "thread-loader"
    }, {
        "loader": "css-loader",
        "options": {
            "modules": true
        }
    }, {
        "loader": "less-loader",
        "options": {
            "lessOptions": {
                "javascriptEnabled": true
            }
        }
    }]
}, {
    "test": /\.less$/,
    "use": [{
        "loader": "thread-loader"
    }, {
        "loader": "css-loader"
    }, {
        "loader": "less-loader",
        "options": {
            "lessOptions": {
                "javascriptEnabled": true
            }
            }
        }]
}

There seems to be no way to get the webpack context

same question.

"less": "^4.1.3", "less-loader": "^11.0.0", "thread-loader": "4.0.2",

Same question , May we restart this issue ?

alexander-akait commented 1 year ago

@KyrieLii we need to improve API for this https://github.com/webpack-contrib/thread-loader/blob/master/src/worker.js#L125, do you want to open a new issue or send a PR?

KyrieLii commented 1 year ago

@KyrieLii we need to improve API for this https://github.com/webpack-contrib/thread-loader/blob/master/src/worker.js#L125, do you want to open a new issue or send a PR?

@alexander-akait Thanks for your reply, I create a new one https://github.com/webpack-contrib/thread-loader/issues/185.