Expressjs更改服务器从

时间:2017-06-27 18:07:37

标签: node.js express babeljs

我想知道是否可以更改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/

任何提示都表示赞赏!

谢谢你的时间!

0 个答案:

没有答案