2017-11-05 5 views
2

つのエラーがある:はアレクサSDKを使用して - "にErrorMessage": "モジュール」./dist/commonjs/index.js'を見つけることができません"、

"errorMessage": "Cannot find module './dist/commonjs/index.js'", 

他のエラーは、次のとおりです。

Unable to import module 'index': Error 
    at Function.Module._resolveFilename (module.js:469:15) 

私は2番目のエラーで他の投稿を見たことがありますが、私は彼らが推薦し、依然として固執したすべてを行った。また、/dist/commonjs/index.jsの問題については言及していません。

私のラムダファンクションハンドラは "index.handler"に設定され、メインコードはindex.jsにあります。

私はWindowsです。私のzipファイル(HebrewVocab.zip)はこのように見えます。 enter image description here そしてnode_modulesフォルダの完全であると思われると次のようになります。私はzip形式で圧縮して、私が書いたのPowerShellでアップロード enter image description here

Compress-Archive -Path index.js,package.json,node_modules -DestinationPath $ZipFileName 
aws lambda update-function-code --function-name HebrewVocab --zip-file 
fileb://HebrewVocab.zip 

マイindex.jsは、このコードで始まる:

exports.handler = function(event, context, callback) { 
    var alexa = Alexa.handler(event, context, callback); 
    alexa.registerHandlers(handlers); 
    alexa.execute(); 
}; 

私は、同様のエラーの他のすべての記事で読んだすべての要件を満たしているようです。以前はHelloWorldプロジェクトを手に入れましたが、alexa-sdkは使用しませんでした。

また、Stackoverflowの一人として「npm install npm」を​​提案しましたか?それは必要ですか?

テストするアレクサ声を使用することと比較してIラムダで「テスト」は、私は詳細を参照してください。

"errorMessage": "Cannot find module './dist/commonjs/index.js'", 

は、標準のパス接頭辞こと./dist/commonjsべきでしょうか?私はハードドライブ(.zipとして)に "関数"をエクスポートしていて、それはまさに私がアップロードしたものです。そして、確かに.zipファイルのルートにindex.jsがあります。

私はcommonjsがパッケージであることを発見したので、 "npm install commonjs --save"を実行し、再圧縮して再アップロードしましたが、同じ結果が得られました。

後で/ node_modules/i18next/dist/commonjsにindex.jsが含まれていますが、それが関連しているかどうかはわかりません。私はそのdist/commonjsをrootとnode_modulesにコピーしようとしましたが、それと同じエラーです。

lambda-local -l index.js -h handler -e eventHelloWorld.json 

にErrorMessageのスクリーンショット:私はローカルで実行したとき

それが正常に動作 enter image description here

そして最後にではなく、少なくとも、私のpackage.jsonは次のようになります。

{ 
    "name": "HebrewVocab", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index.js", 
    "dependencies": { 
    "alexa-sdk": "^1.0.18", 
    "commonjs": "0.0.1", 
    "npm": "^5.5.1" 
    }, 
    "devDependencies": {}, 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "keywords": [], 
    "author": "", 
    "license": "ISC" 
} 

これ以外に何ができますか?私はAmazonのサポートフォーラムに投稿しましたが、答えはありません。私のプロジェクトは、これを理解するまで立ち往生しています。

アップデート2017年11月7日:

さて、私はちょうど1つの狂気の観察を行いました。 。上記のPowershellによって作成されたzipは、Windowsの右クリック「圧縮ファイル」フォルダとは異なるサイズの.zipを作成します。 Total Command "Synchronize Directories"を使用して2つのジップを比較すると、すべてのファイルと構造の内容が同じになります。しかし、手動Windows zipから作成されたものと、Powershellによって作成されたものが、このスレッドで最初に報告されたエラーを示しています。 Powershellによって作成されたものは、5,019,123対5,032,770とやや小さいです。私は他のpowershell圧縮オプションをいくつか試しましたが、はるかに大きなファイルを作成しました(これをオフにすると約30 MBのファイルが生成されました)。

私は夕暮れゾーンに入りました - 何か考えましたか?

答えて

2

Windowsの場合、次のように7-zipを使いました(Powershellファイルでは、$ ZipFileNameは前の行で定義された変数です)。

& "c:\Program Files\7-Zip\7z.exe" a -r $ZipFileName index.js package.json client_secret.json GoogleCalendarAPI.js node_modules .credentials calendar-nodejs-quickstart.json 
1

PowerShellスクリプトを使用して同じ問題に遭遇し、Alexaスキルによって呼び出されるラムダ関数のコードを圧縮してアップロードしました。 PowerShell github repoのissue #2140によれば、Compress-ArchiveはOS Xと互換性のないアーカイブを生成し、Unixから派生したOSが疑わしい。

hereのように私はすでにWindows用のLinuxサブシステムをインストールしていたので、bash -c 'zip -r filename *'を使ってしまいました。私は最初にCompress-7Zipを試しましたが、非常に遅かったので、私が試した最初の数匹を掛けていたと思っていました。

関連する問題