Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Gulp autoprefixer引发引用错误:未定义承诺_Node.js_Npm_Gulp_Autoprefixer - Fatal编程技术网

Node.js Gulp autoprefixer引发引用错误:未定义承诺

Node.js Gulp autoprefixer引发引用错误:未定义承诺,node.js,npm,gulp,autoprefixer,Node.js,Npm,Gulp,Autoprefixer,我尝试使用gulp autoprefixer对我的sass进行一次gulp编译,然后进行autoprefixit,但我遇到了一个错误 var gulp = require('gulp'), sass = require('gulp-sass'), autoprefixer = require('gulp-autoprefixer'); gulp.task('test', function(){ gulp.src('_sass/main.sass') .p

我尝试使用
gulp autoprefixer
对我的sass进行一次gulp编译,然后进行autoprefixit,但我遇到了一个错误

var gulp = require('gulp'),
    sass = require('gulp-sass'),
    autoprefixer = require('gulp-autoprefixer');

gulp.task('test', function(){
    gulp.src('_sass/main.sass')
        .pipe(sass())
        .pipe(autoprefixer()) 
        .pipe(gulp.dest('./assets/css')); 
});
我正在尝试运行这个
Gulpfile.js
,我正在使用:

"gulp": "~3.9.0",
"gulp-sass": "~2.0.4",
"gulp-autoprefixer": "~3.0.1",
和NPM版本
1.3.10

当我运行
gulptest
时,我得到以下结果:

/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/postcss/lib/lazy-result.js:152
        this.processing = new Promise(function (resolve, reject) {
                              ^
ReferenceError: Promise is not defined
    at LazyResult.async (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/postcss/lib/lazy-result.js:152:31)
    at LazyResult.then (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/postcss/lib/lazy-result.js:75:21)
    at DestroyableTransform._transform (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/index.js:28:13)
    at DestroyableTransform.Transform._read (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:172:10)
    at DestroyableTransform.Transform._write (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:160:12)
    at doWrite (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:326:12)
    at writeOrBuffer (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:312:5)
    at DestroyableTransform.Writable.write (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:239:11)
    at write (/home/matei/Tests/test-4/node_modules/gulp-sass/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:623:24)
    at flow (/home/matei/Tests/test-4/node_modules/gulp-sass/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:632:7)

我真的不知道我做错了什么。当我使用sass或普通css时,它不起作用。我认为我的文件有些问题。

我使用以下工具将node.js更新为最新版本:

# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
对于我的Ubuntu机器,如图所示

之后,我使用以下工具更新了NPM:

sudo npm cache clean -f
sudo npm install -g n
sudo n stable
如图所示

现在,
gulp autoprefixer
开始工作,但我从
gulp sass
得到一个错误。我使用以下说明对其进行了更新:

  • 删除您的node_modules文件夹
  • 从package.json文件中删除gulp sass
  • 从package.json文件中删除节点sass(如果有)
  • 运行npm安装gulp sass--保存开发
  • 根据需要更新您的吞咽任务
  • 找到了。现在我有了
    “吞咽sass”:“^2.0.4”
    ,这解决了我所有的问题


    谢谢你的建议和帮助。

    也有同样的问题。对我来说,更新节点不起作用,但在gulpfile的最开始添加它会起作用:

    require('es6-promise').polyfill();
    

    在存在package.json的ur项目位置安装es6 promise

    npm install es6-promise
    
    然后将gulpfile.js的第一行代码设置为以下代码:

    var Promise = require('es6-promise').Promise;
    

    这并不能直接回答这个问题,但对于那些在尝试运行ionic 2教程时遇到此错误的人来说,这可能会很有用

    正如其他答案所指出的,问题在于缺少
    es6承诺

    我在尝试启动离子2教程()时遇到了相同的错误: (我的爱奥尼亚2版本是2.0.0-beta.25,最新的教程提交是ED9EF2FCEC887E4D1C08C375C849B06B8394BAD7)

    这是我在尝试使用
    ionic-serve
    运行应用程序时得到的堆栈跟踪:

    Running 'serve:before' gulp task before serve
    [18:37:00] Starting 'clean'...
    [18:37:01] Finished 'clean' after 1.02 s
    [18:37:01] Starting 'watch'...
    [18:37:01] Starting 'sass'...
    [18:37:01] Starting 'html'...
    [18:37:01] Starting 'fonts'...
    [18:37:01] Starting 'scripts'...
    [18:37:01] Finished 'scripts' after 62 ms
    [18:37:01] Finished 'html' after 72 ms
    [18:37:01] Finished 'fonts' after 77 ms
    Caught exception:
     ReferenceError: Promise is not defined
        at LazyResult.async (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/postcss/lib/lazy-result.js:157:31)
        at LazyResult.then (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/postcss/lib/lazy-result.js:79:21)
        at DestroyableTransform._transform (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/index.js:24:6)
        at DestroyableTransform.Transform._read (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:159:10)
        at DestroyableTransform.Transform._write (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:147:83)
        at doWrite (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:313:64)
        at writeOrBuffer (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:302:5)
        at DestroyableTransform.Writable.write (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:241:11)
        at DestroyableTransform.ondata (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-sass/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:531:20)
        at DestroyableTransform.EventEmitter.emit (events.js:95:17) 
    
    同样,正如其他答案所指出的,这是解决问题的方法:

  • 编辑gulpfile.js并在第6行中添加:
    require('es6-promise').polyfill()

  • 使用以下命令安装缺少的依赖项:
    npm install es6 promise--save


  • 更改后,问题得到了解决,我可以启动本地服务器。

    不确定这与Sass(或CSS)有什么关系,当Autoprefixer抛出错误时。不确定这是否是解决方案。。。。但是你的NPM版本已经过时了。尝试更新npm和您的所有软件包,我以前在运行较旧版本时遇到过类似的怪癖。升级节点后,您可以使用
    npm-rebuild-node-sass
    处理
    。谢谢此外,当您在运行Task时遇到错误时,console消息会要求运行此命令。这确实是NodeJS版本问题,请参阅良好说明。操作系统不可知说明可以在以下位置找到:我不需要这些步骤:
    sudo npm缓存清理-f sudo npm安装-g n sudo n stable
    ,并使用
    npm rebuild node sass
    修复节点sass问题:这是一个很好的“修补程序”,更好的解决方案是升级node.js(参见@Matei)@MonkeyKing正如我在回答中所说,更新node并不能解决问题什么包?我得到
    找不到模块es6 promise
    @Victor尝试在您的终端运行
    npm install es6 promise
    这对我来说解决了问题,我所需要做的就是将npm install es6 promise与--save一起使用,并将此require与.pollyfill一起使用,使用.promise(),就像在上面的awnser中那样对我不起作用。