ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – Grunt Browserify – require.resolve不是一个函数

2019-07-08 23:36:34  阅读:342  来源: 互联网

标签:javascript node-js gruntjs browserify


我通过以下方式使用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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有