質問するログイン新規登録

回答編集履歴

1

文章の流れが変だったので修正しました

2017/03/31 08:03

投稿

so87
so87

スコア789

answer CHANGED
@@ -1,10 +1,11 @@
1
+ Oracle Instant Clientのパスが通っていない場合は
2
+ `Error: The specified module could not be found.`
3
+ といったエラーになりますので、何かしらのOracleのdllが参照されていると思います。
4
+ (bitが違う場合は明確なエラーメッセージですぐに原因がわかります^^)
5
+
1
6
  Oracle Instant Client以外にもOracleクライアントがインストールされていませんか?
2
7
  おそらくnpm oracledbでビルドに利用したoci.dllと実行時に使っているoci.dllが違うものと思われます。
3
8
 
4
- Oracle Instant Clientのパスが通っていない場合は
5
- `Error: The specified module could not be found.`
6
- といったエラーになりますので。
7
-
8
9
  自分は参照するOracle Instant Clientを明確にするために、
9
10
  実行時にプログラムのほうで環境変数をセットしています。
10
11
 
@@ -20,5 +21,11 @@
20
21
  const oracledb = require('oracledb');
21
22
  ```
22
23
 
24
+ oracledb周りは環境依存が強いので、
25
+ 自分は各OS、アーキテクチャ(bit)、nodeバージョンによってビルドしたモジュールを複数用意し、
26
+ 実行時にrequireしています。
27
+ ```javascript
28
+ const oracledb = require(`./oracledb${info.bit}-${info.os}-node${info.node_v}`);
29
+ ```
23
30
 
24
- ちなみにOCI_INC_DIRとOCI_LIB_DIRに関しましてはnpmでoracledbをビルドする際に必要となるもので、実行する際には不要す。
31
+ ちなみにOCI_INC_DIRとOCI_LIB_DIRに関しましてはnpmでoracledbをビルドする際に必要となるもので、実行する際には不要となります。