我想知道是否可以更改Express服务器所服务的上下文,以避免服务的应用程序中的import / require文件出现问题。
我从[root] /server.js服务,此文件检查process.env.NODE_ENV,然后需要一个文件,例如./dist/ENVIRONMENT/server.js
if (['staging', 'production'].indexOf(process.env.NODE_ENV) > -1) {
require('./dist/' + process.env.NODE_ENV + '/server.js')
} else {
require('babel-register')
require('./server.dev.js')
}
所提供的文件触发与导入/要求位置相关的错误,导致上一段中解释的原因失败
Error: Cannot find module '../../../../xxxxx'
为什么我这样做?我正在编译非开发的服务器源代码(使用babel运行),然后复制到分发目录。我知道我可以在部署期间重新命名和移动它,这也解决了问题,但我想学习或理解我们是否能够改变Express服务器的上下文服务!
从我的头脑中,我想我必须通过类似的东西来解决它(我将要测试):
var dist = path.resolve(__dirname, '../../')
app.use(express.static(dist))
我尝试了但失败了同样的错误:
Error: Cannot find module '../../../../config'
at Function.Module._resolveFilename (module.js:485:15)
at Function.Module._load (module.js:437:25)
at Module.require (module.js:513:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/Users/xxxx/www/projectFoobar/dist/staging/lib/services/foobarService/index.js:13:15)
at Module._compile (module.js:569:30)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:503:32)
at tryModuleLoad (module.js:466:12)
at Function.Module._load (module.js:458:3)
配置文件恰好位于[root]目录
中**确定刚刚意识到使用导入/导出是一种不好的做法
https://nodesource.com/blog/es-modules-and-node-js-hard-choices/
任何提示都表示赞赏!
谢谢你的时间!