1

Gulp を実行するように Jenkins をセットアップしようとしていますが、node-sass (gulp-sass プラグインの依存関係) をインストールしようとすると失敗し続けます。

問題は、インストール中にノードがスクリプト ファイルを見つけられないことです。スクリプトが実際にプロジェクト リポジトリに存在することを確認しました。サーバーでリポジトリをローカルにプルしてインストールすると、問題なくインストールされます。これは、Jenkins 関連の環境の問題だと思います。

エラー出力は次のとおりです。

> node-sass@2.1.1 install /root/.jenkins/jobs/odyssey-frontend/workspace/node_modules/gulp-sass/node_modules/node-sass
> node scripts/install.js

module.js:338
    throw err;
          ^
Error: Cannot find module '/root/.jenkins/jobs/odyssey-frontend/workspace/node_modules/gulp-sass/node_modules/node-sass/scripts/install.js'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:278:25)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3
npm ERR! Linux 3.14.35-28.38.amzn1.x86_64
npm ERR! argv "node" "/home/ec2-user/.linuxbrew/bin/npm" "install" "--production"
npm ERR! node v0.12.2
npm ERR! npm  v2.7.6
npm ERR! code ELIFECYCLE

npm ERR! node-sass@2.1.1 install: `node scripts/install.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the node-sass@2.1.1 install script 'node scripts/install.js'.
npm ERR! This is most likely a problem with the node-sass package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node scripts/install.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls node-sass
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /root/.jenkins/jobs/odyssey-frontend/workspace/npm-debug.log
module.js:338
    throw err;
          ^
Error: Cannot find module 'gulp-sass'
    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> (/root/.jenkins/jobs/odyssey-frontend/workspace/gulpfile.js:11:12)
    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)
Build step 'Execute shell' marked build as failure
Finished: FAILURE

Linux ディストリビューションは、Fedora に似た Amazon Linux AMI です。gulp-sass ^1.3.3 経由で node-sass ^2.0.1 をインストールしようとしています。

node-sass 3.0.0 で更新された gulp-sass 2.0.0 を試しましたが、まだ同じ問題があります。

node-sass の依存関係をすべて削除したところ、正常にビルドされるようになりました。つまり、そのパッケージだけです。他のすべてのノード パッケージは正常にインストールされます。

4

1 に答える 1

2

これをGithubプロジェクトに投稿し、回答がありました: https://github.com/sass/node-sass/issues/941#issuecomment-100414516

Jenkins は、ビルド時にすべてを sudo として実行するようです。NPM は、セキュリティ機能として、インストール スクリプトを sudo として実行しないため、エラーが発生します。--unsafe-permインストール スクリプトにフラグを追加すると、この問題を回避できます。

于 2015-05-09T16:02:42.450 に答える