Node.js Web包express服务器中的动态请求找不到模块
我有一个非常小的express应用程序。基本上是穷人的无服务器功能提供者。然而,这不是我在生产中使用的任何东西,它在未打包模式下工作。但是,在我对该应用程序进行网页打包后,动态请求总是会失败,并出现Node.js Web包express服务器中的动态请求找不到模块,node.js,webpack,requirejs,Node.js,Webpack,Requirejs,我有一个非常小的express应用程序。基本上是穷人的无服务器功能提供者。然而,这不是我在生产中使用的任何东西,它在未打包模式下工作。但是,在我对该应用程序进行网页打包后,动态请求总是会失败,并出现错误:找不到模块异常。但是模块在那里,路径是正确的 devserver.js: const express = require('express') const fs = require('fs') const resourceMapper = fs.existsSync(__dirname + '/
错误:找不到模块异常。但是模块在那里,路径是正确的
devserver.js:
const express = require('express')
const fs = require('fs')
const resourceMapper = fs.existsSync(__dirname + '/../webpack.config.js') ? require('../webpack.config') : null
const app = express()
// enable express json
app.use(express.json())
// add dynamic lambda functions
app.post('/api/:lambda', function(request, response) {
const resource = resourceMapper
? `${__dirname}/.${resourceMapper[1].entry[request.params.lambda.replace(/^common-/, "").replace(/\.js$/, "")]}`
: `${__dirname}/${request.params.lambda}`
const lambda = require(resource) // <--------- problematic require
const result = lambda.main(request.body)
response.status(200).json(result)
});
app.listen(3000)
我真的尝试了很多东西,各种各样的模块和插件。最后,他们让我工作的唯一方法就是使用一个非常讨厌的eval
技巧
const require2 = eval('require')
//[snip]
const lambda = resourceMapper
? require(`${__dirname}/.${resourceMapper[1].entry[request.params.lambda.replace(/^common-/, "").replace(/\.js$/, "")]}`)
: require2(`./${request.params.lambda}`)
const require2 = eval('require')
//[snip]
const lambda = resourceMapper
? require(`${__dirname}/.${resourceMapper[1].entry[request.params.lambda.replace(/^common-/, "").replace(/\.js$/, "")]}`)
: require2(`./${request.params.lambda}`)