Gruntjs browserify:连接的browserified文件=>;错误_prelude.js vs.加载单独的文件起作用

Gruntjs browserify:连接的browserified文件=>;错误_prelude.js vs.加载单独的文件起作用,gruntjs,concat,browserify,Gruntjs,Concat,Browserify,将两个browserified文件(vendor.js和app.js合并为combined.js)连接时遇到问题 在浏览器中加载combined.js会在_prelude.js中引发以下内容: Uncaught Error: Cannot find module 'function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&am

将两个browserified文件(vendor.js和app.js合并为combined.js)连接时遇到问题

在浏览器中加载combined.js会在_prelude.js中引发以下内容:

Uncaught Error: Cannot find module 'function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}'

Uncaught错误:找不到模块'function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==“function”&&require;if(!u&&a)返回a(o,!0);if(i)返回i(o,!0);抛出新错误(“找不到模块“+o+”)}var f=n[o]={exports:{};t[o][0]。调用(f.exports,function(e){var n=t=t[n,exports][1,f,e]return n[o].exports}var i=typeof require==“function”&&require;for(var o=0;o我已经做了一些初步的调查,并且序言似乎有一个明确的问题。我已经向grunt browserify维护人员提出了一个问题,让我们看看结果如何

现在,我将在vendor.js和app.js之间连接一个文件,以修复序言,如下所示:

grunfile.js

concat: {
        'build/<%= pkg.name %>.js': ['build/vendor.js', 'client/src/fix_browserify', 'build/app.js']
    },
注意:上述文件中没有回车符或换行符

我不确定两次定义
require
是否会产生任何意外后果,但它似乎在我有限的使用范围内发挥作用。如果您有多个应用程序捆绑包,则同样需要在每个捆绑包之前交错连接
fix\u browserify
文件

如果我发现了更好的解决方案,我会更新这个答案

更新

在了解了browerify的工作原理后,我最终放弃了grunt/browserify,选择了早午餐,因为早午餐更容易设置,而且在情况发生变化时重建速度更快。虽然不是grunt替代品,但它构建了我需要的一切。

快速解决方案 我们通过确保每个文件中的JS包在被连接之前以分号结尾,修复了这个错误

更多信息 在撰写本文时,似乎Browserify忽略了分号(可能是因为)如果您启用了生成源映射(由
debug
选项控制)。如果我们不提供此选项,Browserify会添加分号,并且在连接后不会出现错误

无论默认行为是省略或附加分号,似乎都会导致一些问题(请参阅-有时您希望将输出包装在表达式中,因此不希望使用分号)。这在很大程度上也取决于您的构建管道,因为我们在另一个具有稍微不同的构建过程的项目中没有错误,该项目通过Grunt的
uglify
任务运行输出,剥离源映射,并在最后添加分号


我认为Andrew添加间隔文件的解决方案是不必要的,并且有更好的解决方案可以确保在连接捆绑包之前输出符合您的预期(即在末尾使用分号)。

您并不孤单,我正在尝试解决相同的问题相同问题的其他实例[此处][1][1]:在browserified文件的末尾添加分号为我解决了这个问题。在github上提交了这个问题:与gulp有相同的问题,加载larvels
bootstrap.js
,一个AdminLTE实现,以及
app.js
,我都在同一个文件中。我也尝试过使用
Gulporder
,但没有效果,当我尝试放置它们都在同一个文件中。确保最后一个未注释的js行以分号结尾并不能解决我的问题(使用gulp)。到目前为止,唯一的解决方案是不连接,并分别加载它们。
concat: {
        'build/<%= pkg.name %>.js': ['build/vendor.js', 'client/src/fix_browserify', 'build/app.js']
    },
require=