Inline JavaScript is not enabled. Is it set in your options?

一、想要做的事儿和遇到的问题:

移动端在做适配的时候,使用了vw适配方案。对于我的项目来说,设计稿的尺寸 / 3.75(如:50px / 3.75 = 13.333vw),但是每次写单位的时候,要手动在控制台计算一下。所以想要自己写一个 less 的自定义函数去做这个计算。

1. 公共的less文件编写:

// common.less
// px 转 vw
.vwMixin() {
  @functions: ~`(
      function() {this.vw = function(size) {return size / 3.75 + "vw" ;}}
    )
    () `;
}
.vwMixin();

参考链接:https://juejin.cn/post/6844903841251459080,感谢大佬。

 2. 按照webpack文档的说明,配置如下:

  less-loader的文档里,写了options里是可以配置javascriptEnabled的。

  * 如果less-loader@6.x版本的话,options要改为 lessOptions

// webpack.config.js
....
{
  test: /\.less/,
  use: ['style-loader', 'css-loader', {
    loader: 'less-loader',
    options: {
     javascriptEnabled: true
    }
  }]
},
...

3. 在 Vue 组件中使用:

<style lang="less" scoped>
@import "~@/css/common.less";

.date-container {
  margin: 4vw auto 0;
  width: 100vw;
  height: 9.6vw;
  .date-items {
    width: ~`vw(72)`;
    height: ~`vw(36)`;
  }
}
</style>

4. 重新编译.....控制台报错:Inline JavaScript is not enabled. Is it set in your options?

二、如何解决?

 既然是按照文档上写的配置没有生效,那么肯定是还有其他地方需要配置相同的内容。于是,就在webpack的配置目录下面找。于是最后定位在了 vue-loader.config.js上,代码如下:

const utils = require('./utils')
module.exports = {
  loaders: utils.cssLoaders({
    sourceMap: sourceMapEnabled,
    extract: isProduction
  }),
}

这里调用了一个utils.cssLoaders,很明显,这里是和样式有关的loader,于是又定位到了 utils.js文件中。找到了如下代码:

exports.cssLoaders = function (options) {
  // ......
  return {
    css: generateLoaders(),
    postcss: generateLoaders(),
    // 处理 less-loader 的地方在这里,于是在这里再加上 javascriptEnabled: true
    less: generateLoaders('less', { javascriptEnabled: true }),
    sass: generateLoaders('sass', { indentedSyntax: true }),
    scss: generateLoaders('sass'),
    stylus: generateLoaders('stylus'),
    styl: generateLoaders('stylus')
  }
}

最后,重新编译,大功告成! 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值