カテゴリー
JavaScript TypeScript

NW.js + Typescript で exports is not defined の対処方法

TypeScriptから生成されたJavascriptファイルには、以下が含まれます。

Object.defineProperty(exports, "__esModule", { value: true });

これが、NW.jsに読み込まれたとき、以下のエラーメッセージが出力され、Javascriptが実行できません。

Uncaught ReferenceError: exports is not defined

対処方法

HTMLファイルに以下を記述し、各Javascriptファイルが読み込まれる前に実行されるようにします。

<script>var exports = {"__esModule": true};</script>

こうすることで、exports未定義の状態にならず、実行できるようになります。

カテゴリー
C#

C# 指定された DSN には、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています。の対処方法

.Net Framework 3.5 で開発したアプリケーションを Windows 10 64 bit で
実行し、ODBC(32bit)でデータベースアクセスしようとしたときに発生しました。

原因としては、アプリケーションの実行が64bitであるにも関わらず、
ODBCが32bitのため、このエラーメッセージが発生しました。

・アプリケーション:64bit
・OS:64bit
・ODBCドライバ:32bit

こんな状態です。アプリケーションとODBCドライバのアーキテクチャ(bit数)を
一緒にする必要があるようです。

対策は、32bitアプリケーションとして実行するように、ビルドオプションを変更しました。

プラットフォームターゲットが
・Any CPU の場合、OSのアーキテクチャによって32bitや64bitに変更されます。
・x86 の場合、OSのアーキテクチャによらず、32bitで実行されます。
・x64 の場合、OSのアーキテクチャによらず、64bitで実行されます。

ちなみに、実行時のbit数が32bitか64bitかを取得するソースを紹介します。

    /// <summary>
    /// 実行時のアーキテクチャが32Bitか64Bitかを判断する
    /// </summary>
    /// <param name="processBit"></param>
    /// <returns></returns>
    public static int GetRunningArch(out string processBit)
    {
        processBit = "";

        try
        {
            if (IntPtr.Size == 4) processBit = "32bit";
            else processBit = "64bit";

            return UEReturnCode.Normal;
        }
        catch
        {
            return UEReturnCode.Error;
        }

    }