回答編集履歴

1

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

2017/03/31 08:03

投稿

so87
so87

スコア764

test CHANGED
@@ -1,14 +1,16 @@
1
- Oracle Instant Client以外にもOracleクライアントがインストールされていませんか?
2
-
3
- おそらくnpm oracledbでビルドに利用したoci.dllと実行時に使っているoci.dllが違うものと思われます。
4
-
5
-
6
-
7
1
  Oracle Instant Clientのパスが通っていない場合は
8
2
 
9
3
  `Error: The specified module could not be found.`
10
4
 
11
- といったエラーになりますので。
5
+ といったエラーになりますので、何かしらのOracleのdllが参照されていると思います
6
+
7
+ (bitが違う場合は明確なエラーメッセージですぐに原因がわかります^^)
8
+
9
+
10
+
11
+ Oracle Instant Client以外にもOracleクライアントがインストールされていませんか?
12
+
13
+ おそらくnpm oracledbでビルドに利用したoci.dllと実行時に使っているoci.dllが違うものと思われます。
12
14
 
13
15
 
14
16
 
@@ -42,6 +44,18 @@
42
44
 
43
45
 
44
46
 
47
+ oracledb周りは環境依存が強いので、
48
+
49
+ 自分は各OS、アーキテクチャ(bit)、nodeバージョンによってビルドしたモジュールを複数用意し、
50
+
51
+ 実行時にrequireしています。
52
+
53
+ ```javascript
54
+
55
+ const oracledb = require(`./oracledb${info.bit}-${info.os}-node${info.node_v}`);
56
+
57
+ ```
45
58
 
46
59
 
60
+
47
- ちなみにOCI_INC_DIRとOCI_LIB_DIRに関しましてはnpmでoracledbをビルドする際に必要となるもので、実行する際には不要す。
61
+ ちなみにOCI_INC_DIRとOCI_LIB_DIRに関しましてはnpmでoracledbをビルドする際に必要となるもので、実行する際には不要となります。