构建 JavaScript 项目 Travis-CI 时出错

Error on build JavaScript project Travis-CI

本文关键字:出错 Travis-CI 项目 JavaScript 构建      更新时间:2023-09-26

我有一个项目,我正在用Gulp.js在本地构建。但是当我把它推送到GitHub上时,Travis开始构建它。我收到以下错误:

module.js:338
    throw err;
    ^
Error: Cannot find module 'gulp-concat'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:278:25)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (/home/travis/build/thyagostall/freecell/gulpfile.js:4:11)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)

.travis.yml

language: node_js
node_js:
  - "0.12"
before_script:
  - npm install -g gulp gulp-concat gulp-connect gulp-html-replace gulp-eslint
script: gulp

还有我gulpfile.js

var gulp = require('gulp'),
    connect = require('gulp-connect'),
    concat = require('gulp-concat'),
    htmlreplace = require('gulp-html-replace');
var distDir = './build/',
    sourceDir = './src/';
gulp.task('webserver', function() {
    connect.server({
        root: distDir,
        port: 2345,
        livereload: true
    });
    gulp.watch('src/**/*.*', ['build', 'images', 'styles', 'vendor']);
});
gulp.task('images', function() {
    gulp.src(sourceDir + '**/*.{jpg,png,gif}')
        .pipe(gulp.dest(distDir));
});
gulp.task('styles', function() {
    gulp.src(sourceDir + '**/*.css')
        .pipe(gulp.dest(distDir));
});
gulp.task('build', function() {
    gulp.src([sourceDir + '**/utility.js', sourceDir + '**/game_events.js', sourceDir + '**/memento.js', sourceDir + '**/*.js'])
        .pipe(concat('main.js'))
        .pipe(gulp.dest(distDir))
        .pipe(connect.reload());
});
gulp.task('vendor', function() {
    gulp.src(sourceDir + '**/*.html')
        .pipe(htmlreplace({
            'vendor': 'vendor.js',
            'js': 'main.js'
        }))
        .pipe(gulp.dest(distDir));
});
gulp.task('lint', function() {
    gulp.src(sourceDir + '**/*.js')
        .pipe(eslint())
        .pipe(eslint.format())
});
gulp.task('default', ['build', 'images', 'styles', 'vendor']);

我错过了什么明显的东西吗?

首先,将.travis.yml更改为以下内容:

language: node_js
node_js:
  - "0.12"
before_script:
  - npm install -g gulp
script: gulp

您只需要全局安装gulp,因为这提供了gulp的命令行工具。根据官方 npm 文档:

有两种

方法可以安装 npm 包:本地或全局。您可以根据您希望如何使用包来选择要使用的安装类型。

如果您想将其用作命令行工具,例如 grunt CLI,那么您希望全局安装它。另一方面,如果你想使用类似 Node 的要求来依赖你自己的模块中的包,那么你需要在本地安装。

其次,我在你的github帐户(从你的StackOverflow配置文件链接)上做了一些调查,找到了你正在尝试构建的项目。查看package.json,我发现devDependencies中没有gulp-concat。这可能是由于键入:

npm install gulp-concat

而不是:

npm install gulp-concat --save-dev

这可以解释为什么你可以在本地构建项目,但它在 Travis-CI 上失败了。将gulp-concat添加到devDependencies应该可以解决此问题。