PostCSS错误:[object Object]不是PostCSS插件

时间:2016-10-17 15:19:26

标签: gulp postcss

错误来自postcss插件,我想我可能写错了。

我尝试将cssnanoautoprefixer添加到postcss插件。

gulp/node_modules/gulp-postcss/node_modules/postcss/lib/processor.js:143
        throw new Error(i + ' is not a PostCSS plugin');
        ^

Error: [object Object] is not a PostCSS plugin
    at Processor.normalize (/Applications/XAMPP/xamppfiles/htdocs/sites/gulp/node_modules/gulp-postcss/node_modules/postcss/lib/processor.js:143:15)
    at new Processor (/Applications/XAMPP/xamppfiles/htdocs/sites/gulp/node_modules/gulp-postcss/node_modules/postcss/lib/processor.js:51:25)
    at postcss (/Applications/XAMPP/xamppfiles/htdocs/sites/gulp/node_modules/gulp-postcss/node_modules/postcss/lib/postcss.js:73:10)
    at Transform.stream._transform (/Applications/XAMPP/xamppfiles/htdocs/sites/gulp/node_modules/gulp-postcss/index.js:47:5)
    at Transform._read (_stream_transform.js:167:10)
    at Transform._write (_stream_transform.js:155:12)
    at doWrite (_stream_writable.js:300:12)
    at writeOrBuffer (_stream_writable.js:286:5)
    at Transform.Writable.write (_stream_writable.js:214:11)
    at DestroyableTransform.ondata (/Applications/XAMPP/xamppfiles/htdocs/sites/gulp/node_modules/gulp-sass/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:531:20)
Mac-a45e60e72dad:gulp JoeKonst$ 

我的代码:

// Dependancies
var gulp = require('gulp'),
    browserSync = require('browser-sync'),
    plumber = require('gulp-plumber'),
    autoprefixer = require('gulp-autoprefixer'),
    uglify = require('gulp-uglify'),
    compass = require('gulp-compass'),
    rename = require('gulp-rename'),
    nano = require('cssnano'),
    del = require('del'),
    postcss = require('gulp-postcss'),
    sass = require('gulp-sass');

// Styles
gulp.task('styles', function(){
    gulp.src('sass/main.scss')
    .pipe(sass())
    .pipe(postcss([autoprefixer({browsers: ['last 2 versions']}), nano()]))
    .pipe(gulp.dest('css/'));

    gulp.watch('sass/**/*.scss', ['styles']);
});

// Tasks
gulp.task('default', ['styles']);

5 个答案:

答案 0 :(得分:18)

您正在使用gulp-autoprefixer包。这只是原始autoprefixer软件包的包装器,它将其转换为gulp插件,因此您可以执行.pipe(autoprefixer())

但是postcss期望原始包本身,而不是gulp插件。

所以不要这样:

autoprefixer = require('gulp-autoprefixer'),

您需要安装autoprefixer包并执行此操作:

autoprefixer = require('autoprefixer'),

答案 1 :(得分:9)

@rizkit-我找到了fix,它很简单。只需运行X即可解决问题。

基本上,您需要在依赖项中同时使用npm i -d postcssgulp-postcss插件才能正常工作。我假设postcss插件将需要更新项目中的gulp-postcss包引用以正确地对其进行修复,因此将来我们只需要包含postcss

答案 2 :(得分:5)

如果使用postcss-cli,您可能会再次发现该问题,那么有一个与此相关的github问题,其中包含一些链接和解释:https://github.com/postcss/autoprefixer/issues/1358

tl; dr:

  • 对于gulp-postcssPostStylus,您必须等待更新,而对于postcss,您可能永远无法获得更新。
  • 或将public float attackRate; public bool alreadyAttacked; private void AttackPlayer() { agent.SetDestination(transform.position); if (alreadyAttacked == false) { GetComponent<EnemyGun>().Shoot(); alreadyAttacked = true; Invoke("ResetAttack", attackRate); } } void ResetAttack() { alreadyAttacked = false; } 添加为devDependency

答案 3 :(得分:1)

Tailwindcss和React问题

对于在设置带有tailwindcss的react项目时遇到上述问题的任何人,运行npm i postcss -D对我来说都是有效的。

答案 4 :(得分:1)

就我而言,我仍然收到此错误以及 cannot find build-manifest.json 当我升级到 Next js v 10 并升级了 tailwind、autoprefixer 和 postcss 时。

我还必须升级 yarn 以最终摆脱错误。

我的 package.json 中更新的开发依赖项如下:

  "devDependencies": {
    "autoprefixer": "^10.2.6",
    "babel-plugin-inline-react-svg": "^1.1.1",
    "postcss": "^8.3.0",
    "tailwindcss": "^2.1.2"
  }