赞
踩
在 node 模块中,我们一般使用的是 commom.js规范;
使用场景:小编在自己编写loader的时候,需要接收配置文件中给当前loader传递过来的参数,并且需要对接收到的参数进行验证,看是否符合参数规则;所以就使用到了 schema-utils 这个三方模块 ,当时小编没有使用 EsModule 规范进行导入,反而使用的是 commonJs 规范进行导入的这个三方模块,然而就出现了 validateOptions is not a function 这个问题~
解决方法请看下方~
小编当时写的代码如下:
- //1.引入
- const validateOptions = require("schema-utils");
- const loaderUtils = require("loader-utils");
-
- //2.编写loader
- module.exports = function (source) {
- //获取配置文件中传递过来的参数
- const options = loaderUtils.getOptions(this) || {};
- //指定验证规则
- let schema = {
- type: "object",
- //可以在properties中告诉webpack,当前loader可以传递哪些参数
- properties: {
- //可以传递name参数
- name: {
- //name参数的数据类型是字符串类型
- type: "string"
- }
- },
- additionalProperties: false
- };
- //验证参数
- validateOptions(schema, options, "ReplaceLoader");
- source = source.replace(/it666/g, options.name);
- return source;
- };
当执行到上方代码的时候出现了下面截图中的情况:
小编在使用导入的这个三方模块的时候,把上面的这一句代码 :
validateOptions(schema,options,"ReplaceLoader");
修改成了下方的代码,就正确了:
validateOptions.validate(schema,options,"ReplaceLoader");
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。