我尝试为从ngBoilerplate模板派生的AngularJS应用程序添加源图,该模板使用grunt构建,grunt-contrib-uglify将JavaScript源缩小为一个app.js文件。< / p>
问题是grunt实际上无法将源映射写入磁盘,这个神秘的错误(使用grunt --verbose,仅略微编辑):
Running "uglify" task
Running "uglify:compile" (uglify) task
Verifying property uglify.compile exists in config...OK
Files: release/assets/MyApp-1.0.0.debug.js -> release/assets/MyApp-1.0.0.js
Options: banner="", footer="", compress={"warnings":false}, mangle={}, beautify=false, report="min", expression=false, sourceMap
Minifying with UglifyJS...Reading release/assets/MyApp-1.0.0.debug.js...OK
OK
Writing release/assets/MyApp-1.0.0.js...OK
Writing release/assets/MyApp-1.0.0.js.map...ERROR
Warning: Unable to write "release/assets/MyApp-1.0.0.map" file (Error code: undefined). Use --force to continue.
Aborted due to warnings.
关键部分是:
警告:无法编写&#34;发布/ assets / MyApp-1.0.0.map&#34; file(错误代码:undefined)。使用--force继续。
现在你可能会想说这是问题Grunt Uglify source map “unable to write”的重复,除了案例是一个简单的问题,其中提问者使用旧版本的包的新配置样式,导致错误Unable to write "true" file
。在我的情况下不是这样。很明显,它试图编写的文件名是正确的(JS文件加上&#34; .map&#34;扩展名),但是系统无法做到这一点并且给出了一个巨大的无益的&#34;错误代码:undefined&#34;回来。
packages.json文件中的版本 - 我清理了node_modules文件夹并重新运行了npm install以确保这是正在使用的内容:
"devDependencies": {
"grunt": "0.4.5",
"grunt-recess": "0.6.1",
"grunt-contrib-jshint": "0.10.0",
"grunt-contrib-concat": "0.4.0",
"grunt-contrib-watch": "0.6.1",
"grunt-contrib-uglify": "0.5.0",
"grunt-karma": "0.6.2",
"grunt-ngmin-with-comments": "0.0.3",
"grunt-html2js": "0.2.3",
"grunt-groundskeeper": "0.1.9",
"lodash": "2.4.1",
"grunt-contrib-clean": "0.5.0",
"grunt-contrib-copy": "0.5.0",
"grunt-contrib-connect": "^0.7.1"
}
在node_modules内部,uglify-js
版本为2.4.14。
我的Gruntfile配置并不完全是样板文件ngBoilerplate - 我已经对它进行了一些修改,以便我可以得到一个未被明确的.debug.js和一个缩小的.js。这是:
uglify: {
compile: {
options: {
sourceMap: true
},
files: {
'<%= minJs %>': '<%= debugJs %>'
}
}
}
我也尝试过:
没有任何效果。有什么想法吗?
答案 0 :(得分:2)
我使用不同的设置获得相同的错误。如果我禁用源图,一切都会好起来的。我花了几个小时调试错误并放弃了。
只需切换到旧版本的grunt-contrib-uglify,例如~0.4,直到找出错误为止。