Open jatinvmehta opened 5 years ago
I think the problem is related to incorrect exports, your db.js file should not export default
, it should just be export connectToDatabase
I am having a similar problem. Please see below:
What went wrong?
Babe Migration from 7.x to 8.x Node Migration from 8.x to 10.x
What was the config you used?
Changed targets in .babelrc from 8.10 to 10.14.1 Changed runtime in serverless.yml from 8.10 to runtime: nodejs10.14.1
What stacktrace or error message from your provider did you see?
ERROR in ./getCaseRecord.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
Error: Plugin/Preset files are not allowed to export objects, only functions. In /Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/babel-preset-stage-3/lib/index.js
at createDescriptor (/Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/@babel/core/lib/config/config-descriptors.js:178:11)
at items.map (/Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/@babel/core/lib/config/config-descriptors.js:109:50)
at Array.map (<anonymous>)
at createDescriptors (/Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/@babel/core/lib/config/config-descriptors.js:109:29)
at createPresetDescriptors (/Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/@babel/core/lib/config/config-descriptors.js:101:10)
at presets (/Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/@babel/core/lib/config/config-descriptors.js:47:19)
at mergeChainOpts (/Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/@babel/core/lib/config/config-chain.js:320:26)
at /Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/@babel/core/lib/config/config-chain.js:283:7
at buildRootChain (/Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/@babel/core/lib/config/config-chain.js:120:22)
at loadPrivatePartialConfig (/Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/@babel/core/lib/config/partial.js:85:55)
at Object.loadPartialConfig (/Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/@babel/core/lib/config/partial.js:110:18)
at Object.<anonymous> (/Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/babel-loader/lib/index.js:144:26)
at Generator.next (<anonymous>)
at asyncGeneratorStep (/Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/babel-loader/lib/index.js:3:103)
at _next (/Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/babel-loader/lib/index.js:5:194)
at /Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/babel-loader/lib/index.js:5:364
at new Promise (<anonymous>)
at Object.<anonymous> (/Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/babel-loader/lib/index.js:5:97)
at Object._loader (/Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/babel-loader/lib/index.js:224:18)
at Object.loader (/Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/babel-loader/lib/index.js:60:18)
at Object.<anonymous> (/Users/MyDocs/DevOps/QuickAutoTags/services/v2.crm-case-record-api/node_modules/babel-loader/lib/index.js:55:12)
Here is what is in my .babelrc
file:
{
"plugins": [],
"presets": [
["env", {"node": "10.14.1"}],
"stage-3"
]
}
Here are my dependencies in my package.json
:
"devDependencies": {
"aws-sdk": "^2.350.0",
"babel-core": "^6.26.3",
"babel-eslint": "^10.0.1",
"babel-loader": "^8.0.6",
"babel-plugin-source-map-support": "^2.0.1",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-env": "^1.7.0",
"babel-preset-stage-3": "^6.24.1",
"eslint": "^5.15.0",
"eslint-config-standard": "^12.0.0",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-node": "^9.1.0",
"eslint-plugin-promise": "^4.0.1",
"eslint-plugin-react": "^7.12.4",
"eslint-plugin-standard": "^4.0.0",
"jest": "^24.8.0",
"serverless-offline": "^5.0.0",
"serverless-webpack": "^5.1.0",
"webpack": "^4.16.2",
"webpack-node-externals": "^1.6.0"
},
What do you think? I really want to stay current and use the most recent version of babel if at all possible. Does anyone know if serverless-webpack supports babel.v8 yet??
If so, how can I get them to work together considering the above info?
Thanks!
I'm also facing this issue.
This is my folder structure and the webpack build result:
This is my webpack.config.js:
const slsw = require('serverless-webpack')
const nodeExternals = require('webpack-node-externals')
module.exports = {
entry: slsw.lib.entries,
target: 'node',
node: {
__dirname: true
},
// Generate sourcemaps for proper error messages
devtool: 'source-map',
// Since 'aws-sdk' is not compatible with webpack,
// we exclude all node dependencies
externals: [nodeExternals()],
mode: slsw.lib.webpack.isLocal ? 'development' : 'production',
optimization: {
// We no not want to minimize our code.
minimize: false
},
performance: {
// Turn off size warnings for entry points
hints: false
},
// Run babel on all .js files and skip those in node_modules
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader',
include: __dirname,
exclude: /node_modules/
}
]
}
}
As we can see, my email_template.ejs file was not built so that after I deployed and run the lambda function, it would return
"errorMessage": "ENOENT: no such file or directory, open '/var/task/src/email_template.ejs'"
However, it works perfectly on my local.
Hi @hmtri1011 , I think you need to install and configure an ejs loader for webpack (ejs extensions). Can you check?
Hi @HyperBrain,
I found the reason, the issue is my email_template.js was not built and deployed on output.zip file by webpack. So I use copy-webpack-plugin
and add this line to my webpack.config.js
(...),
plugins: [
new CopyWebpackPlugin([{ from: './src/email_template.ejs', to: './src' }])
]
Now my email_template.js is existed on the output.zip file and it works perfectly.
I am creating serverless lambda API and using webpack so can use ES6 feature. My webpack.config.js is
My serverless.yml file already contains following
My handler file try to use db connection (MongoDB) defined i db.js
and handler file refer it as
I get warning and error as
When i execute npm start
My package.json is