Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Web包express服务器中的动态请求找不到模块_Node.js_Webpack_Requirejs - Fatal编程技术网

Node.js Web包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 + '/

我有一个非常小的express应用程序。基本上是穷人的无服务器功能提供者。然而,这不是我在生产中使用的任何东西,它在未打包模式下工作。但是,在我对该应用程序进行网页打包后,动态请求总是会失败,并出现
错误:找不到模块
异常。但是模块在那里,路径是正确的

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}`)