带有json解析错误的无服务器框架

时间:2018-09-16 14:50:38

标签: javascript json amazon-web-services yaml serverless-framework

我将无服务器框架与javascript一起使用。

我的代码是:

import { App } from '../lib/App';

export const hello = (event, context, cb) => {
context.callbackWaitsForEmptyEventLoop = false;

// This resolved promise would be be in the application library code in a real-world application and provide the results
App.handleFirst(event)  // eslint-disable-line promise/catch-or-return
.then(result => ({
statusCode: 200,
headers: {
  'Content-Type': 'application/json;charset=utf-8'
},
body: JSON.stringify(result)
}))
.asCallback(cb);

return;};

在App.js内部

import BbPromise from  'bluebird';

const THE_MESSAGE = 'Hello from the webpack 4 sample';

export class App {
static handleFirst(event) {
const myDemoResult = {
  message: App.THE_MESSAGE,
  from: 'First lambda ',
  event
};
console.info(myDemoResult);
return BbPromise.resolve(myDemoResult);
}

我使用其他命令来部署它。

set SLS_DEBUG=*
severless deploy

我的错误是:

Syntax Error -------------------------------------------

Unexpected token A in JSON at position 0

 For debugging logs, run again after setting the "SLS_DEBUG=*" environment variable.

Stack Trace --------------------------------------------

SyntaxError: Unexpected token A in JSON at position 0
SyntaxError: Unexpected token A in JSON at position 0
at JSON.parse (<anonymous>)
at BbPromise.try (F:\workspace\svlecma\node_modules\serverless-webpack\lib\packagers\npm.js:61:47)
at tryCatcher (F:\workspace\svlecma\node_modules\bluebird\js\release\util.js:16:23)
at Function.Promise.attempt.Promise.try (F:\workspace\svlecma\node_modules\bluebird\js\release\method.js:39:29)
at Utils.spawnProcess.catch.then.then.depJson (F:\workspace\svlecma\node_modules\serverless-webpack\lib\packagers\npm.js:61:35)
at tryCatcher (F:\workspace\svlecma\node_modules\bluebird\js\release\util.js:16:23)
at Promise._settlePromiseFromHandler (F:\workspace\svlecma\node_modules\bluebird\js\release\promise.js:512:31)
at Promise._settlePromise (F:\workspace\svlecma\node_modules\bluebird\js\release\promise.js:569:18)
at Promise._settlePromise0 (F:\workspace\svlecma\node_modules\bluebird\js\release\promise.js:614:10)
at Promise._settlePromises (F:\workspace\svlecma\node_modules\bluebird\js\release\promise.js:694:18)
at _drainQueueStep (F:\workspace\svlecma\node_modules\bluebird\js\release\async.js:138:12)
at _drainQueue (F:\workspace\svlecma\node_modules\bluebird\js\release\async.js:131:9)
at Async._drainQueues (F:\workspace\svlecma\node_modules\bluebird\js\release\async.js:147:5)
at Immediate.Async.drainQueues [as _onImmediate] (F:\workspace\svlecma\node_modules\bluebird\js\release\async.js:17:14)
From previous event:
at PluginManager.invoke (C:\Users\sheng\AppData\Roaming\npm\node_modules\serverless\lib\classes\PluginManager.js:390:22)
at PluginManager.spawn (C:\Users\sheng\AppData\Roaming\npm\node_modules\serverless\lib\classes\PluginManager.js:408:17)
at ServerlessWebpack.BbPromise.bind.then.then.then (F:\workspace\svlecma\node_modules\serverless-webpack\index.js:102:51)
at runCallback (timers.js:694:18)
at tryOnImmediate (timers.js:665:5)
at processImmediate (timers.js:647:5)
at process.topLevelDomainCallback (domain.js:121:23)

Get Support --------------------------------------------
 Docs:          docs.serverless.com
 Bugs:          github.com/serverless/serverless/issues
 Issues:        forum.serverless.com

Your Environment Information -----------------------------
 OS:                     win32
 Node Version:           10.10.0
 Serverless Version:     1.31.0

我的serverless.yml在这里:

https://gist.github.com/thinksource/9fd0c8728df2195b7110b3be04aec2ae

为什么json第一个元素错误?如何查看json字符串?

1 个答案:

答案 0 :(得分:0)

看到您的serverless.yml文件后,我相信问题可能出在webpack.config.js文件中。可能值得尝试更改您的custom部分,并用引号引起来:'webpack.config.js'。喜欢:

custom:
  webpack:
    webpackConfig: 'webpack.config.js'
    includeModules: true

我认为问题出在您的App.js类中:

const myDemoResult = {
  message: App.THE_MESSAGE,
  from: 'First lambda ',
  event
};

您的JSON结构无效;在传递对象事件的地方,没有给它提供键/名称。您可能想要类似的东西:

const myDemoResult = {
  message: App.THE_MESSAGE,
  from: 'First lambda ',
  event: event
};

常量THE_MESSAGE不在App类中。您应该这样将其移至App{..}内:

export class App {
    static get THE_MESSAGE() { return 'Hello from the webpack 4 sample'; }
...
相关问题