噶:无法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来更好地处理这种情况。