组件标准化打包报错

1,024 阅读1分钟

我有一个类似于elementUI的组件标准化,用webpack打包成js文件,另外需要用到gulp整合样式
输入打包命令:cnpm run build 后报错如下

$ cnpm run build
$ gulp
...
fs.js:27
const { Math, Object } = primordials;
^
ReferenceError: primordials is not defined
at fs.js:27:26
...

一查,是node版本和gulp版本不兼容,node太高或gulp太低
退版本以后问题更多,升级gulp吧
于是把gulp从3.9.1升级到4.0.2
其中有些语法变了,要改改,比如:

// gulp.task('go', ['compile','copyfont']);  ==> 改成 
gulp.task('go', gulp.series('compile', 'copyfont', done => done()));

再打包cnpm run build,还是报错

e.js
D:\yto\code\标准化\giraffe-vue\node_modules\_gulp@3.9.1@gulp\bin\gulp.js:129
    gulpInst.start.apply(gulpInst, toRun);
                   ^
TypeError: Cannot read property 'apply' of undefined
    at D:\yto\code\标准化\giraffe-vue\node_modules\_gulp@3.9.1@gulp\bin\gulp.js:129:20

一查,涉及到gulp和全局gulp-cli版本不一致,安装个全局gulp-cli,让他们版本相匹配就行
首先我们看一下

PS C:\> gulp -v
CLI version: 2.2.0
Local version: Unknown

果然,unknown的这个意思就是未安装全局gulp-cli

npm i gulp-cli -g

安装时报错

npm ERR! Maximum call stack size exceeded   超过最大栈

用cnpm安装,到时能安装,但是打包的时候还是报上面的错,用uninstall也删不了
于是找到全局安装gulp-cli的地方,gulp-cli相关都给删了,
大概是这个路径(Downloading gulp-cli to C:\Users\用户名\AppData\Roaming\npm\node_modules\gulp-cli_tmp)
装这可费了老大劲了
再安装

npm i gulp-cli -g

安装成功,(奇怪,我看了gulp -v,还是老样子没变那)
再跑

cnpm run build

打包成功了