在LESS中启用内联javascript

问题描述 投票:14回答:4

我想在我的较少文件中使用内联js,但我收到以下消息:

内联JavaScript未启用。它是否设置在您的选项中?

我怎样才能启用它?

javascript npm less laravel-mix
4个回答
32
投票

我有同样的问题,我使用webpack少加载器,我需要在较少的加载器配置中添加javascript选项:

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

我在源代码中找到了较少的编译器:qazxsw poi

他们以这种方式解析js less选项:

https://github.com/less/less.js/blob/3.x/bin/lessc

所以你应该在动态编译(如webpack loader)中使用静态编译(命令行)中的'--js'或'javascriptEnabled:true'来启用javascript。


1
投票

使用最新版本的less时遇到了这个问题。然后我切换到2.7版本,我修复了它。


1
投票

出于安全考虑,默认情况下禁用内联JavaScript。发生的事情是,在线生成器有时会允许配置Less变量然后直接解释。

这很容易受到代码注入的影响,这意味着可以将JavaScript注入到直接在服务器上运行的Less样式表中。

出于这个原因,内联JavaScript已被弃用(默认情况下在3.x中设置为false),并且替换为 case 'js': options.javascriptEnabled = true; break; case 'no-js': console.error('The "--no-js" argument is deprecated, as inline JavaScript ' + 'is disabled by default. Use "--js" to enable inline JavaScript (not recommended).'); break; 语法并使用正确的JS插件。 - (见:@plugin

是的,您仍然可以将编辑选项设置为http://lesscss.org/features/#plugin-atrules-feature,但这不是样式表的最佳实践。通常,您的样式表中不应包含JS。最好使用一个插件。


1
投票

是的,@ matthew-dean和@ davide-carpini所说的一切......但对于那些寻找Grunt-LESS代码片段的人来说,你去:

javascriptEnabled: true

这对我使用 less: { dev: { options: { paths: ['Content/less'], plugins: [ new(require('less-plugin-autoprefix'))({ browsers: ['last 2 versions'] }), new(require('less-plugin-clean-css'))({ sourceMap: true, advanced: true }) ], relativeUrls: true, javascriptEnabled: true }, files: { 'Content/less/site.css': 'Content/less/site.less' } } }, 的实施工作...你的里程可能会有所不同

© www.soinside.com 2019 - 2024. All rights reserved.