尝试使用iView在Vue项目中使用主题时无法编译错误

时间:2019-05-08 13:43:54

标签: javascript vue.js vuejs2 less iview

我正在尝试在Vue项目中更改iView的主题。我按照此链接中找到的步骤进行操作:

https://www.iviewui.com/docs/guide/theme-en

我在主项目文件夹中创建了一个名为my-theme的文件夹。在其中,我有一个名为index.less的文件,其中包含主题的样式。我还使用以下命令安装了less-loader

npm install less-loader --save-dev

然后,我将主题导入到main.js文件中,如下所示:

import iView from 'iview';
import '../my-theme/index.less';

Vue.use(iView);

但是,当我尝试加载项目时,出现以下错误:

Failed to compile.

./my-theme/index.less (./node_modules/css-loader??ref--10-oneOf-3-1!./node_modules/postcss-loader/src??ref--10-oneOf-3-2!./node_modules/less-loader/dist/cjs.js??ref--10-oneOf-3-3!./my-theme/index.less)
Module build failed (from ./node_modules/less-loader/dist/cjs.js):
Error: Cannot find module 'less'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/myusername/myapp/node_modules/less-loader/dist/index.js:8:36)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/myusername/myapp/node_modules/less-loader/dist/cjs.js:3:18)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)

https://pastebin.com/wRSP65bX

如何解决此问题?感谢您的帮助。

更新

我还使用less安装了npm install less --save。现在,我收到此错误:

Failed to compile.

./my-theme/index.less (./node_modules/css-loader??ref--10-oneOf-3-1!./node_modules/postcss-loader/src??ref--10-oneOf-3-2!./node_modules/less-loader/dist/cjs.js??ref--10-oneOf-3-3!./my-theme/index.less)
Module build failed (from ./node_modules/less-loader/dist/cjs.js):


// https://github.com/ant-design/ant-motion/issues/44
.bezierEasingMixin();
^
Inline JavaScript is not enabled. Is it set in your options?
      in /Users/myusername/myapp/node_modules/iview/src/styles/color/bezierEasing.less (line 110, column 0)

1 个答案:

答案 0 :(得分:0)

您需要在vue.config.js中启用javascript loaderOptions

如果项目的根文件夹中没有 vue.config.js 文件,请创建该文件并粘贴以下代码:

module.exports = {
    css: {
        loaderOptions: {
            less: {
                javascriptEnabled: true
            }
        }
    }
};

否则,您只需将此代码放入 vue.config.js 文件中。您的文件现在看起来像这样:

module.exports = {
    ...// other options
    ...
    css: {
        loaderOptions: {
            less: {
                javascriptEnabled: true
            }
        }
    }
    ...
    ...
};