javascript – 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'
一般来说它工作正常,但我仍有问题,
在我的代码的某些部分,我使用节点需要模块,如下所示:
chartViewPath = "../../charts/view/#{chartViewName}"
resolvedPath = require.resolve(chartViewPath)
chartViewModule = require.modules[resolvedPath]
我收到以下错误:require.resolve不是一个函数
我尝试在grunt任务中使用别名公开全局require:
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.resolve或modules方法.
我还应该提一下,在移动到grunt之前我使用Cakefile来浏览我的文件
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
因为出于某种原因,浏览器会添加到每个条目的开头
提交这些方法,如gist.
解决方法:
grunt-browserify可能依赖于不同版本的browserify而不是之前使用的版本.使用npm ls检查之前的版本,看它是否与grunt-browerify想要的版本不同.
除此之外,我没有看到您的原始脚本与Grunt插件尝试执行的操作之间存在显着差异.
标签:javascript,node-js,gruntjs,browserify 来源: https://codeday.me/bug/20190708/1407164.html