Node.js Alexa任务问题
我目前正在通过AWS Lambda编写Node.js Alexa任务的代码,并且一直在尝试编写一个函数,该函数从OpenWeather API接收信息并将其解析为一个名为的变量weather。相关代码如下:
weather
var request = require('request'); var weather = ""; function isBadWeather(location) { var endpoint = "http://api.openweathermap.org/data/2.5/weather?q=" + location + "&APPID=205283d9c9211b776d3580d5de5d6338"; var body = ""; request(endpoint, function (error, response, body) { if (!error && response.statusCode == 200) { body = JSON.parse(body); weather = body.weather[0].id; } }); } function testWeather() { setTimeout(function() { if (weather >= 200 && weather < 800) weather = true; else weather = false; console.log(weather); generateResponse(buildSpeechletResponse(weather, true), {}); }, 500); }
我在Cloud9和其他IDE中无数次运行了此代码片段,并且该代码片段似乎正常运行。但是,当我将其压缩到一个程序包中并上传到AWS Lambda时,出现以下错误:
{ "errorMessage": "Cannot find module '/var/task/index'", "errorType": "Error", "stackTrace": [ "Function.Module._load (module.js:276:25)", "Module.require (module.js:353:17)", "require (internal/module.js:12:17)" ] }
我搜寻了无数文章,并安装了应该使此代码运行的module- js,request和许多其他Node模块,但似乎没有任何方法可以解决此问题。这是我的目录,以防万一:
- planyr.zip - index.js - node_modules - package.json
有人知道这个问题可能是什么吗?提前非常感谢您。
解决它!我的问题是我尝试使用Finder中Mac内置的压缩功能压缩文件。
如果你是一个Mac用户,像我这样的,那么当你在你的项目的根目录(文件夹包含您运行终端下面的脚本index.js,node_modules等文件)。
index.js
node_modules
zip -r ../yourfilename.zip *
对于Windows:
Compress-Archive -LiteralPath node_modules, index.js -DestinationPath yourfilename.zip