2013-11-27 67 views
4

我以下列方式使用grunt-browserify咕噜Browserify - require.resolve不是一个函数

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

我试图揭露全球需要与繁重的任务别名:

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变量的函数,但我仍然不能使用require.resolvemodules方法。

我还要提到的是移动到咕噜之前我使用CakefileBrowserify我的文件

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.resolverequire.modules 因为某种原因,这种方式browserify在每个条目 文件的开头添加了这些方法,如gist

回答

1

grunt-browserify可能取决于您以前使用的不同版本的browserify。使用npm ls检查您以前的版本,看它是否与grunt-browerify想要的版本不同。

除此之外,我没有看到您的原始脚本和Grunt插件尝试做什么之间的显着差异。

+0

我试过了。没有工作 –