【问题标题】:node-sass install failing on JenkinsJenkins 上的 node-sass 安装失败
【发布时间】:2015-07-19 18:09:26
【问题描述】:

我正在尝试设置 Jenkins 以运行 Gulp,但在尝试安装 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 发行版是 Amazon Linux AMI,类似于 Fedora。尝试通过 gulp-sass ^1.3.3 安装 node-sass ^2.0.1。

我刚刚用 node-sass 3.0.0 尝试了更新的 gulp-sass 2.0.0,但仍然有同样的问题。

我删除了所有 node-sass 依赖项,它现在构建成功。所以它真的只是那个包;所有其他节点包安装成功。

【问题讨论】:

  • 你也可以在同一个作业中运行echo $NODE_PATH 吗?可能你没有全局设置它。而对于 Jenkins 来说,如果它为用户设置是没有意义的。
  • 它的回声是空的。 $NODE_PATH 的用途是什么?
  • 我通过 Jenkins 系统配置界面添加了一个 NODE_PATH 环境变量,它指向与我在 bash 中回显它时相同的位置。还是没有运气。

标签: node.js jenkins gulp-sass node-sass


【解决方案1】:

我在 Github 项目上发布了这个问题并得到了回答:https://github.com/sass/node-sass/issues/941#issuecomment-100414516

Jenkins 在构建时似乎以 sudo 运行所有内容。 NPM 作为一项安全功能,不会将安装脚本作为 sudo 运行,因此会出现错误。在安装脚本中添加--unsafe-perm 标志会解决此问题。

【讨论】:

    猜你喜欢
    • 2020-02-25
    • 1970-01-01
    • 2022-06-14
    • 2021-02-17
    • 1970-01-01
    • 2020-01-25
    • 2018-11-06
    • 2018-12-03
    • 2018-10-16
    相关资源
    最近更新 更多