Bashスクリプトはnpmコマンドを正しく処理しません。

Bashスクリプトはnpmコマンドを正しく処理しません。

git次のように、ユーザーに基づいていくつかのコマンドを実行するスクリプトがあります。npm

#!/bin/sh
/bin/su someuser -c "
cd /opt/app1/;
env -i git remote update;
env -i git pull origin dev;
cd /opt/app1/client/;
npm run build;
"

コマンドがgit正しく実行されます。コマンドnpmが実行され、ファイルをビルドしますが、多くのエラーが発生します。

Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 8.x

Found bindings for the following environments:
  - Linux 64-bit with Node.js 9.x

This usually happens because your environment has changed since running `npm install`.
Run `npm rebuild node-sass --force` to build the binding for your current environment.

npm run build端末でユーザーとして実行すると、すべてがうまく機能します。私もスクリプトenv -i npm run buildでそれを試しましたが、これが結果でしたenv: ‘npm’: No such file or directory。それでその時やってみたのにenv -i /usr/local/bin/npm run build変にまた出てきたんですよ/usr/bin/env: 'node': No such file or directory

私はこれがuser -cユーザーログインのようなすべての環境を設定し、親なしでenv -i私をきれいにすると思いました。env

また試しました:

#!/bin/sh
/bin/su someuser - -c "
cd /opt/app1/;
git remote update;
git pull origin dev;
cd /opt/app1/client/;
npm run build;
"

最後の試みは最初と同じ結果を返します。 git コマンドが動作し、ビルドは端末からユーザーとしてコマンドを実行すると、他のように sass と環境にエラーが発生します。

このコマンドが正しく機能しない理由をご存知ですか?

ベストアンサー1

ノードエラーを調べるOlorinの提案に従って、私はこの問題をもう少し調べました。node -vforがsomeuser返され、v9.4.0コマンドがどのユーザーにもインストールされているバージョンをlocate見つけられず、再インストールしたにもかかわらず、同じエラーが発生します。次のコマンドが有効です。参考にしてくださいv8nodesource ~/.nvm/nvm.sh;

#!/bin/sh  
/bin/su tstapps -c "
cd /opt/app1/;
git remote update;
git pull origin dev;
cd /opt/app1/client/;
source ~/.nvm/nvm.sh;
npm run build;

私はnvm use v9.5.0それなしでまだ動作していることを一度テストしました。次は剥がしたのにsource ~/.nvm/nvm.sh;また壊れました。だから明らかにそれを調達して見る必要なしにそれを得る方法はありませんnvmshell-scripts envnpm run buildnvm

nvm奇妙な問題です。一部のユーザーが以下に基づいてリソースを使用すると同様の問題が発生しているようです。bashこのスレッド。まだそれがどこからv8来たのかわからない。v8インストールディレクトリからinclude/nodeインポートしない限りv9。例:

/home/someuser/.nvm/versions/node/v9.5.0/include/node/v8-platform.h
/home/someuser/.nvm/versions/node/v9.5.0/include/node/v8-profiler.h
/home/someuser/.nvm/versions/node/v9.5.0/include/node/v8-testing.h
/home/someuser/.nvm/versions/node/v9.5.0/include/node/v8-util.h
/home/someuser/.nvm/versions/node/v9.5.0/include/node/v8-value-serializer-version.h
/home/someuser/.nvm/versions/node/v9.5.0/include/node/v8-version-string.h
/home/someuser/.nvm/versions/node/v9.5.0/include/node/v8-version.h
/home/someuser/.nvm/versions/node/v9.5.0/include/node/v8.h
/home/someuser/.nvm/versions/node/v9.5.0/include/node/v8config.h

おすすめ記事