噶:无法find相对path的模块

我很难与噶不加载一个特定的文件。 我是一个关于噶玛的初学者,但是我花了整整一天的时间钻研文档,并且没有成功地寻找类似的问题。

启动因果过程时,加载configuration文件时会失败。 这是错误:

Chrome 52.0.2743 (Linux 0.0.0) ERROR Uncaught Error: Cannot find module './development' at /tmp/node_modules/browser-pack/_prelude.js:1:0 <- /tmp/7b47eeb55cec3f8cc510b5cd637c570a.browserify:1 

我不怀疑这个文件本身就是问题。 我的猜测是这个问题是围绕“需求”的行动。 这个文件可能是第一个在执行过程中被“需要”的文件。 所以Browserify也可能是有罪的。

文件树:

 . ├── karma.conf.js ├── LICENSE ├── package.json ├── README.md └── src ├── config │  ├── base.js │  ├── development.js │  ├── index.js │  └── production.js ├── controllers │  ├── authentication.js │  └── __test__ │  └── authentication.test.js ├── modules │  └── auth │  ├── builder.js │  └── __test__ │  └── mocks │  └── builder.mock.js ├── router.js └── server.js 

karma.conf.js

 'use strict'; module.exports = function(config) { config.set({ basePath: '', frameworks: ['mocha', 'sinon-chai', 'browserify'], files: [ 'src/**/*.test.js' ], exclude: [ ], preprocessors: { 'src/**/*.test.js': ['browserify'] }, reporters: ['progress', 'mocha'], browserify: { debug: true, transform: [ ['babelify',{ presets: ['es2015'], }] ] }, port: 9876, colors: true, logLevel: config.LOG_DEBUG, autoWatch: true, browsers: ['Chrome'], singleRun: false, concurrency: Infinity }) } 

在src / config / index.js中失败

 'use strict'; const env = process.env.NODE_ENV || 'development'; const config = require('./' + env); module.exports = config; 

为了给你们一个重现它的方法,我build立了一个小的节点应用程序: https : //github.com/slecorvaisier/karma-starterkit

从…开始:

  npm run test 

版本:node-v:v6.2.0 npm -v:3.8.9

提前感谢您的帮助。

我认为这个问题来自你使用variables的require,这在browserify中是不支持的。

而不是写作:

 const env = process.env.NODE_ENV || 'development'; const config = require('./' + env); 

尝试:

 const config = process.env.NODE_ENV === "production" ? require('./production') : require('./development'); 

规则是你不能在需要内部使用任何variables。

另请参阅为什么我不能在node.js(browserify)的require()函数中使用variables作为参数?

这是解决scheme:

由于Browserify本身不执行代码,所以'env'值将永远不会被replace。 请参阅: https : //github.com/substack/node-browserify/issues/377

我的解决方法是修改configuration文件如下(src / config / index.js):'use strict';

 const env = process.env.NODE_ENV || 'development'; let config = require('./development'); if (env === 'production') config = require('./production'); module.exports = config; 

这不是最好的解决scheme,因为我必须“列出”所有的env,但testing现在正常工作。 对我来说,一个明确的解决办法是打开webpack来更好地处理这种情况。