質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

3288閲覧

iconv.node: invalid ELF headeの対策を教えて下さい

kumakake

総合スコア42

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2021/04/24 12:39

CentOS7で開発しているnodejsのソースをMacOS Big Sur上のDocker環境に移植しようとしてます。
実行すると下記のエラーが表示されます。

$ docker-compose up --build

/src/node_modules/iconv/lib/iconv.js:30
n-app | if (e.code !== 'MODULE_NOT_FOUND') throw e;
n-app | ^
n-app |
n-app | Error: /src/node_modules/iconv/build/Release/iconv.node: invalid ELF header
n-app | at Object.Module._extensions..node (internal/modules/cjs/loader.js:1250:18)
n-app | at Module.load (internal/modules/cjs/loader.js:1049:32)
n-app | at Function.Module._load (internal/modules/cjs/loader.js:937:14)
n-app | at Module.require (internal/modules/cjs/loader.js:1089:19)
n-app | at require (internal/modules/cjs/helpers.js:73:18)
n-app | at Object.<anonymous> (/src/node_modules/iconv/lib/iconv.js:27:14)
n-app | at Module._compile (internal/modules/cjs/loader.js:1200:30)
n-app | at Object.Module._extensions..js (internal/modules/cjs/loader.js:1220:10)
n-app | at Module.load (internal/modules/cjs/loader.js:1049:32)
n-app | at Function.Module._load (internal/modules/cjs/loader.js:937:14)
n-app | npm ERR! code ELIFECYCLE
n-app | npm ERR! errno 1
n-app | npm ERR! sapp@0.0.0 start: node ./bin/www
n-app | npm ERR! Exit status 1

node_module を一旦削除して、npm install したり、 npm rebuild をしても同じでした。
invalid ELF header の対応法を教えて下さい。
よろしくお願いします。

% cat package.json

{  "name": "sapp", "version": "0.0.0", "private": true, "scripts": { "start": "node ./bin/www" }, "dependencies": { "basic-auth-connect": "^1.0.0", "body-parser": "~1.17.1", "config": "^3.2.2", "connect-pg-simple": "^6.0.0", "cookie-parser": "~1.4.3", "csv-parse": "^4.6.3", "date-utils": "^1.2.21", "debug": "~2.6.3", "ejs": "~2.5.6", "express": "~4.15.2", "express-session": "^1.16.2", "fs": "0.0.1-security", "iconv": "^2.3.5", "jconv": "^0.1.5", "json2csv": "^4.5.2", "log4js": "^4.5.1", "morgan": "~1.8.1", "multer": "^1.4.2", "nodemailer": "^6.3.0", "omise": "^0.5.7", "pg-promise": "^9.0.0", "request": "^2.88.0", "request-promise": "^4.2.4", "serve-favicon": "~2.4.2" } }

% cat docker-compose.yml

version: '3' services: postgres: image: postgres:12.3 restart: always environment: TZ: "Asia/Tokyo" POSTGRES_DB: test_db POSTGRES_USER: testuser POSTGRES_PASSWORD: testpass ports: - 5432:5432 volumes: - postdb:/var/lib/postgresql/data - ./postgres/initdb:/docker-entrypoint-initdb.d app: build: context: ./docker/construct_app # Dockerfile保存場所 contextでDockerfileの保存場所を相対パスで指定する dockerfile: Dockerfile-app # Dockerfileファイル名 image: n-app # イメージ名 container_name: n-app # コンテナ名 ports: # ポート接続 - 3000:3000 volumes: # mount workdir - ./sapp:/src command: [sh, -c, npm install && npm start] pgadmin: image: dpage/pgadmin4 restart: always ports: - 8080:80 environment: PGADMIN_DEFAULT_EMAIL: admin@example.com PGADMIN_DEFAULT_PASSWORD: admin volumes: - pgadmin:/var/lib/pgadmin depends_on: # コンテナの依存関係 - postgres mailhog: image: mailhog/mailhog ports: - 8026:8025 - 1025:1025 volumes: postdb: pgadmin:

% cat docker/construct_app/Dockerfile-app

FROM node:14.4.0 # ベースイメージを指定 ENV NODE_ENV="development" # 環境変数設定 WORKDIR /src # 作業ディレクトリ作成&設定

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Node.js の iconv は js だけでの実装ではなくネイティブが関わってくるので実行する環境でビルドが必要だったとおもいます。
そのせいで別システムへの移植では問題が置きます。
Docker 上で実行するなら、その Docker 上でビルド (npm install) が必要になりそうです。
iconv はそのあたりが面倒なので iconv-lite のほうがおすすめです。
js での実装な上に iconv より速かったはず。

投稿2021/04/24 12:51

lazex

総合スコア604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kumakake

2021/04/24 12:53

ありがとうございます。 やってみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問