Grunt Browserify – require.resolve不是一个函数
我正在用以下方式使用grunt-browserify :
browserify: build: files: '<%= paths.staticJS %>/Login.js' : '<%= paths.buildSrcJS %>/modules/login/Login.js' '<%= paths.staticJS %>/Password.js' : '<%= paths.buildSrcJS %>/modules/password/Password.js' '<%= paths.staticJS %>/RequestPasswordReset.js' : '<%= paths.buildSrcJS %>/modules/password/RequestPasswordReset.js' '<%= paths.staticJS %>/ResetPassword.js' : '<%= paths.buildSrcJS %>/modules/password/ResetPassword.js' '<%= paths.staticJS %>/ClientRouter.js' : '<%= paths.buildSrcJS %>/shared/ClientRouter.js'
一般来说,它工作正常,但我仍然有一个问题,在我的代码的一部分,我使用节点require
模块是这样的:
chartViewPath = "../../charts/view/#{chartViewName}" resolvedPath = require.resolve(chartViewPath) chartViewModule = require.modules[resolvedPath]
而且我收到以下错误: require.resolve is not a function
我试图在grunt任务中公开带有别名的全局需求:
options: alias: [ '<%= paths.buildSrcJS %>/modules/login/Login.js:Login' '<%= paths.buildSrcJS %>/modules/password/Password.js:Password' '<%= paths.buildSrcJS %>/modules/password/RequestPasswordReset.js:RequestPasswordReset' '<%= paths.buildSrcJS %>/modules/password/ResetPassword.js:ResetPassword' '<%= paths.buildSrcJS %>/shared/ClientRouter.js:ClientRouter' ]
它确实公开了作为函数的require
variables,但我仍然不能使用require.resolve
或modules
方法。
我也应该提到,在转移到咕噜之前,我使用Cakefile
来Browserify
我的文件
task 'build','build for development environment', (options)-> fs = require 'fs' path = require 'path' browserify = require 'browserify' routers = [ "modules/login/Login","shared/ClientRouter","modules/password/Password","modules/password/RequestPasswordReset", "modules/password/ResetPassword" ] routers.forEach((r)-> jsSource = path.resolve(__dirname + "/src/main/#{r}.coffee") jsDestination = path.resolve( "#{__dirname}/../static/js/#{r.split('/').slice(-1)}.js" ) browserified = browserify(jsSource, { entry : [] }).bundle() fs.writeFile(jsDestination, browserified, (err)-> if err then console.log "error writing file:#{err}") )
并以这种方式,它工作正常,我可以使用require.resolve
和require.modules
因为由于某种原因,这样require.modules
添加到每个条目文件的开始像这个要点这些方法。
grunt-browserify
可能取决于与以前使用的版本不同的browserify
版本。 使用npm ls
来检查你之前的版本,看它是否与一个grunt-browerify
想要的不同。
除此之外,我没有看到你的原始脚本和Grunt插件试图做什么之间的显着差异。