在更少的时间内启用内联javascript
我想在我的less文件中使用内联js,但我得到以下消息: 未启用内联JavaScript。在你的选项中设置了吗在更少的时间内启用内联javascript,javascript,npm,less,laravel-mix,Javascript,Npm,Less,Laravel Mix,我想在我的less文件中使用内联js,但我得到以下消息: 未启用内联JavaScript。在你的选项中设置了吗 如何启用该功能?我也遇到了同样的问题,我使用的网页加载程序较少,我需要在较少的加载程序配置中添加javascript选项: { test: /\.less$/, use: [{ loader: "style-loader" }, { loader: "css-loader"
如何启用该功能?我也遇到了同样的问题,我使用的网页加载程序较少,我需要在较少的加载程序配置中添加javascript选项:
{
test: /\.less$/,
use: [{
loader: "style-loader"
}, {
loader: "css-loader"
}, {
loader: "less-loader",
options: {
javascriptEnabled: true
}
}]
}
我在less编译器的源代码中发现:
他们以这种方式解析js less选项:
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”,或在动态编译(如webpack loader)中使用“javascriptEnabled:true”来启用javascript。我在使用最新版本的less时遇到了这个问题。然后我切换到2.7版本,并对其进行了修复。出于安全考虑,内联JavaScript在默认情况下被禁用。现在的情况是,在线生成器有时允许配置较少的变量,然后直接进行解释 这很容易受到代码注入的影响,这意味着JavaScript可以直接注入到服务器上运行的样式表中 由于这个原因,内联JavaScript已经被弃用(在3.x中默认设置为false),而替换它的是
@plugin
语法和使用正确的JS插件。-(见:)
是的,您仍然可以将编译选项设置为
javascriptEnabled:true
,但这并不是样式表的最佳实践。通常,样式表中不应包含JS。最好使用插件。对@matthew dean和@davide carpini所说的一切都是肯定的。。。但是,对于任何正在寻找无咕噜代码片段的人,您可以:
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'
}
}
},
这适用于我的实现,使用
“grunt contrib less”:“^2.0.0”
。。。您的里程数可能会有所不同我也遇到了同样的问题,但在vue cli 4
+iVueUi
主题自定义中。也许有人有和我一样的麻烦。这就是解决方案:
在项目根目录下创建或使用现有的vue.config.js
文件。并将此代码(或部分添加)添加到其中
但是请记住,出于安全原因,
js
在默认情况下是禁用的。因此,这将由您自己承担风险。只需更新已接受的答案
从3.11.1开始,如果只使用选项
,它将抛出:
ValidationError:无效的选项对象。减少了装载机的数量
使用与API不匹配的选项对象初始化
模式。
-选项具有未知属性“javascriptEnabled”。这些属性有效:对象{lessOptions?,prependData?,
appendData?,sourceMap?,实现?}
在中,应该使用的不仅仅是选项
,而是lessOptions
,如下所示:
{
test: /\.less$/,
use: [{
loader: "style-loader"
}, {
loader: "css-loader"
}, {
loader: "less-loader",
options: {
lessOptions: {
javascriptEnabled: true
}
}
}]
}
更新日期:2020年5月
对于less loader
版本6.1.0^。
在“less loader”版本6.1.0^中,他们对加载程序进行了突破性的更改,如果您使用Ant Design(或其他less和JS加载程序)之类的东西,您通常会将javascriptEnabled:true标志添加到Web包配置中的“options”对象中
在版本6.1.0^中,此更改被放置在less加载程序选项配置下的lessOptions对象中。这是我使用的解决方案,它适用于我的Webpack配置包
module: { rules: [{
test: /\.less$/,
use: [
{ loader: "style-loader" },
{ loader: "css-loader" },
{
loader: "less-loader",
options: {
lessOptions: {
javascriptEnabled: true,
}
}
}
]
}]}
请注意,javascriptEnabled标志不在顶级options对象下,而是在lessOptions子对象下。这是从less loader版本6.1.0开始的最新更新标准。如果您使用的是cli界面
lessc
,那么您只需要在最后使用--js
lessc --js ./styles/theme.less ./styles/theme.css
我在Gulpless的4.0.0版本中也遇到了同样的问题,安装一个旧版本也解决了这个问题。谢谢。同样的,我切换到了gulp less 3.0.5,它对meThis有效。出于安全原因,meThis已被弃用。请参阅下面的其他答案以了解更多信息。确切地说,应该避免使用内联javascript,如果您无法轻松摆脱的第三方软件包仍然这样做,那么提供的解决方案实际上是有用的。
lessc --js ./styles/theme.less ./styles/theme.css