"sls dynamodb start" 报错:spawn java ENOENT

18

我在Mac上运行,使用aws-nodejs模板创建了一个基本的无服务器服务:

serverless create --template aws-nodejs --path TestService

接下来,我使用以下命令添加无服务器本地功能:

npm install serverless-dynamodb-local
serverless dynamodb install
无论我做了什么,我都无法启动dynamodb-local。当我运行时,
serverless dynamodb start

我遇到了以下错误:

Error: spawn java ENOENT
at _errnoException (util.js:992:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19)
at onErrorNT (internal/child_process.js:372:16)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickDomainCallback (internal/process/next_tick.js:218:9)

运行 java --version 命令会给我以下信息:

Translated text:

运行 java --version 命令会给我以下信息:

Java 10.0.2 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)

我正在使用Node 8.11.4和serverless 1.30.1。 aws-sdk也已安装并设置了我的个人资料。

谢谢

4个回答

36

显然,版本serverless-dynamodb-local@0.2.31存在一个bug。

在github上的问题

我通过使用下面的命令降级到了版本0.2.30:

npm uninstall serverless-dynamodb-local
sls dynamodb uninstall

npm install serverless-dynamodb-local@0.2.30
sls dynamodb install

这应该是被接受的答案。在Github上所有问题中错过了这个:/ - Juvaly
尝试了很多解决方案,但只有这个管用。谢谢! - Myroslav Hryshyn
希望这个插件尽快更新。这个问题不好解决。谢谢! - Jordan
3
我之前安装了版本为 ^0.2.35 的软件,一直没有遇到问题,直到今天。最近发布了 0.2.36 版本,但是出现了相同的问题。目前我仍然使用 0.2.35 版本,并在 package.json 文件中去掉了插入符号。 - Roustalski
1
我使用的是 0.2.38 版本时遇到了这个问题,降级到 0.2.37 版本后问题得到解决... - hwjp

5

根据serverless-dynamodb-local/issues/195上的建议,我刚刚运行了sls dynamodb install --localPath ./bin,Dynamodb已成功安装。然后运行serverless offline start,没有出现错误。


是的!谢谢。 - Swifty McSwifterton
哦,我开始有点担心了。谢谢! - Spankied

3

请确保您已经安装了JRE以运行DynamoDB JAR文件。否则,将会抛出此错误。


0
在我看来,与其选择"serverless-dynamodb-local",不如选择"serverless-dynamodb"更好。实际上,后者只是从dynamodb-local分支出来的。这里有迁移文档供参考。

https://github.com/raisenational/serverless-dynamodb#migrating-from-serverless-dynamodb-local

你需要在系统中安装Java,无论是哪种情况。 如果你是Ubuntu用户,可以使用以下命令来安装Java。
sudo apt-get install openjdk-8-jdk
还需要设置Java的环境变量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接