質問編集履歴

4

2017/02/08 03:12

投稿

philomagi
philomagi

スコア267

test CHANGED
File without changes
test CHANGED
@@ -24,6 +24,8 @@
24
24
 
25
25
  Heroku上でのみビルドが失敗する原因について、何か心当たりが有る方ご教授いただけないでしょうか。
26
26
 
27
+ 開発環境はMacOSです。
28
+
27
29
 
28
30
 
29
31
  以下にpackage.json、gulpfile.jsのビルドに関する部分の抜粋、gulpfileが参照しているjson、bower.jsonを記載します。

3

設定ファイルの内容を記載

2017/02/08 03:12

投稿

philomagi
philomagi

スコア267

test CHANGED
File without changes
test CHANGED
@@ -22,4 +22,472 @@
22
22
 
23
23
 
24
24
 
25
- Heroku上でのみビルドが失敗する原因について、何か心当たりが有る方ご教授いただけないでしょうか
25
+ Heroku上でのみビルドが失敗する原因について、何か心当たりが有る方ご教授いただけないでしょうか
26
+
27
+
28
+
29
+ 以下にpackage.json、gulpfile.jsのビルドに関する部分の抜粋、gulpfileが参照しているjson、bower.jsonを記載します。
30
+
31
+ Herokuおよびローカルで試したコマンドはいずれも`npm run build`です。
32
+
33
+
34
+
35
+ ###package.json
36
+
37
+
38
+
39
+ ```
40
+
41
+ {
42
+
43
+ "name": "myapp",
44
+
45
+ "version": "0.1.0",
46
+
47
+ "description": "A Vue.js project",
48
+
49
+ "author": "",
50
+
51
+ "private": true,
52
+
53
+ "scripts": {
54
+
55
+ "postinstall": "bower install && npm run build",
56
+
57
+ "watchify": "gulp watchify --env=$NODE_ENV --api=$API_URL",
58
+
59
+ "lint:vue": "gulp lint:vue",
60
+
61
+ "test": "karma start karma.conf.js",
62
+
63
+ "build": "gulp build --env=$NODE_ENV --api=$API_URL",
64
+
65
+ "gulp": "gulp --env=$NODE_ENV --api=$API_URL"
66
+
67
+ },
68
+
69
+ "browserify": {
70
+
71
+ "transform": [
72
+
73
+ "babelify",
74
+
75
+ "debowerify",
76
+
77
+ "vueify"
78
+
79
+ ]
80
+
81
+ },
82
+
83
+ "browser": {
84
+
85
+ "vue": "vue/dist/vue.common"
86
+
87
+ },
88
+
89
+ "dependencies": {
90
+
91
+ "axios": "^0.15.3",
92
+
93
+ "babel-core": "^6.0.0",
94
+
95
+ "babel-plugin-transform-inline-environment-variables": "^6.8.0",
96
+
97
+ "babel-plugin-transform-object-rest-spread": "^6.20.2",
98
+
99
+ "babel-plugin-transform-runtime": "^6.0.0",
100
+
101
+ "babel-preset-es2015": "^6.0.0",
102
+
103
+ "babel-preset-stage-2": "^6.0.0",
104
+
105
+ "babel-runtime": "^6.0.0",
106
+
107
+ "babelify": "^7.2.0",
108
+
109
+ "bootstrap-sass": "^3.3.7",
110
+
111
+ "bower": "^1.8.0",
112
+
113
+ "browserify": "^13.1.0",
114
+
115
+ "browserify-hmr": "^0.3.1",
116
+
117
+ "cross-env": "^2.0.0",
118
+
119
+ "css-loader": "^0.26.1",
120
+
121
+ "debowerify": "^1.5.0",
122
+
123
+ "envify": "^3.4.1",
124
+
125
+ "express": "^4.14.0",
126
+
127
+ "gentelella": "^1.3.0",
128
+
129
+ "gulp": "^3.9.1",
130
+
131
+ "gulp-autoprefixer": "^3.1.1",
132
+
133
+ "gulp-env": "^0.4.0",
134
+
135
+ "gulp-envify": "^1.0.0",
136
+
137
+ "gulp-sass": "^2.3.2",
138
+
139
+ "gulp-sourcemaps": "^2.2.0",
140
+
141
+ "gulp-uglify": "^2.0.0",
142
+
143
+ "gulp-util": "^3.0.8",
144
+
145
+ "gulp-vueify": "0.0.3",
146
+
147
+ "gulp-webserver": "^0.9.1",
148
+
149
+ "marked": "^0.3.6",
150
+
151
+ "minimist": "^1.2.0",
152
+
153
+ "moment": "^2.17.1",
154
+
155
+ "node-sass": "^3.13.1",
156
+
157
+ "uglify-js": "^2.5.0",
158
+
159
+ "vinyl-buffer": "^1.0.0",
160
+
161
+ "vinyl-source-stream": "^1.1.0",
162
+
163
+ "vue": "^2.1.6",
164
+
165
+ "vue-datepicker": "https://github.com/hilongjw/vue-datepicker.git",
166
+
167
+ "vue-indicator": "0.0.7",
168
+
169
+ "vue-resource": "^1.0.3",
170
+
171
+ "vue-router": "^2.0.1",
172
+
173
+ "vue-template-compiler": "^2.1.6",
174
+
175
+ "vue2-timepicker": "^0.1.4",
176
+
177
+ "vueify": "^9.4.0",
178
+
179
+ "vuex": "^2.1.1"
180
+
181
+ },
182
+
183
+ "devDependencies": {
184
+
185
+ "babel-eslint": "^7.1.1",
186
+
187
+ "eslint": "^3.3.0",
188
+
189
+ "eslint-config-standard": "^5.3.5",
190
+
191
+ "eslint-config-vue": "^2.0.1",
192
+
193
+ "eslint-plugin-html": "^1.5.2",
194
+
195
+ "eslint-plugin-promise": "^2.0.1",
196
+
197
+ "eslint-plugin-standard": "^2.0.0",
198
+
199
+ "eslint-plugin-vue": "^1.0.0",
200
+
201
+ "gulp-eslint": "^3.0.1",
202
+
203
+ "gulp-plumber": "^1.1.0",
204
+
205
+ "jasmine-core": "^2.4.1",
206
+
207
+ "karma": "^1.2.0",
208
+
209
+ "karma-browserify": "^5.1.0",
210
+
211
+ "karma-jasmine": "^1.0.2",
212
+
213
+ "karma-phantomjs-launcher": "^1.0.0",
214
+
215
+ "karma-spec-reporter": "0.0.26",
216
+
217
+ "npm-run-all": "^2.3.0",
218
+
219
+ "phantomjs-prebuilt": "^2.1.3",
220
+
221
+ "proxyquireify": "^3.0.1",
222
+
223
+ "watchify": "^3.4.0"
224
+
225
+ }
226
+
227
+ }
228
+
229
+
230
+
231
+ ```
232
+
233
+
234
+
235
+ ###gulpfile.js
236
+
237
+ gulpfileではminimistを使って、引数のenvとapiをargvという変数に格納しています。
238
+
239
+ ```javascript
240
+
241
+ // 本番環境とローカル環境で、APIコールの向き先を変えている
242
+
243
+
244
+
245
+ var path = {
246
+
247
+ vue: (app) => {
248
+
249
+ return {
250
+
251
+ src: `./client/view/${app}/src/main.js`,
252
+
253
+ out: `./public/${app}/`
254
+
255
+ };
256
+
257
+ }
258
+
259
+ };
260
+
261
+ require('gulp-env')({
262
+
263
+ vars: {
264
+
265
+ NODE_ENV: argv.env || 'development',
266
+
267
+ API_URL: argv.api || 'http://localhost:8080'
268
+
269
+ }
270
+
271
+ });
272
+
273
+
274
+
275
+ var isProduction = argv.env === 'production';
276
+
277
+
278
+
279
+ gulp.task('build', [
280
+
281
+ 'build:vue',
282
+
283
+ 'build:sass', // sassファイルのコンパイル
284
+
285
+ 'build:static' // 画像やhtmlを公開フォルダにコピー
286
+
287
+ ]);
288
+
289
+
290
+
291
+ gulp.task('build:vue', () => {
292
+
293
+ // 公開ページと管理ページ等、複数のシングルページ用ソースをまとめてビルドする。
294
+
295
+ // applicationsに入っているのは、各アプリ名となる文字列
296
+
297
+ applications.forEach(function(app) {
298
+
299
+ console.log(`build:vue:${app}`);
300
+
301
+ rebuild(app, false);
302
+
303
+ });
304
+
305
+ });
306
+
307
+
308
+
309
+ function rebuild(app, isWatch) {
310
+
311
+ var browserify = require('browserify'),
312
+
313
+ source = require('vinyl-source-stream'),
314
+
315
+ uglify = require('gulp-uglify'),
316
+
317
+ buffer = require('vinyl-buffer'),
318
+
319
+ vuePath = path.vue(app), // 各アプリのパスを取得
320
+
321
+ browserifyHmr = require('browserify-hmr'),
322
+
323
+ b = browserify(vuePath.src, {
324
+
325
+ paths: require('./.localmodules.json')
326
+
327
+ });
328
+
329
+
330
+
331
+ if(!isProduction && isWatch) {
332
+
333
+ // watchifyは開発環境でしか使わない + インストールしない
334
+
335
+ const watchify = require('watchify');
336
+
337
+ b = watchify(b).plugin(browserifyHmr);
338
+
339
+ }
340
+
341
+
342
+
343
+ b.plugin('vueify/plugins/extract-css', { out: vuePath.out + 'build.css' })
344
+
345
+ .on('update', () => {
346
+
347
+ exec();
348
+
349
+ })
350
+
351
+ .on('error', (e) => {
352
+
353
+ console.log(e);
354
+
355
+ })
356
+
357
+ .on('log', (message) => {
358
+
359
+ console.log(message);
360
+
361
+ });
362
+
363
+
364
+
365
+ return exec();
366
+
367
+
368
+
369
+ function exec(bundler) {
370
+
371
+ if(!isProduction) {
372
+
373
+ eslint(app); // lintチェック
374
+
375
+ }
376
+
377
+
378
+
379
+ (() => {
380
+
381
+ if(!isProduction && isWatch) {
382
+
383
+ var plumber = require('gulp-plumber');
384
+
385
+ return b.bundle().pipe(plumber(plumberConfig(`build:vue:${app}`)));
386
+
387
+ }
388
+
389
+ return b.bundle();
390
+
391
+ })().on('error', (e) => {
392
+
393
+ util.log(util.colors.red('[Error][bundle]'), e.message);
394
+
395
+ util.log(util.colors.red('[Error][bundle]'), e);
396
+
397
+ })
398
+
399
+ .pipe(source('build.js'))
400
+
401
+ .pipe(buffer())
402
+
403
+ .pipe(sourcemap.init())
404
+
405
+ .pipe(uglify().on('error', function(err) {
406
+
407
+ util.log(util.colors.red('[Error][uglify]'), err.message);
408
+
409
+ this.emit('end');
410
+
411
+ }))
412
+
413
+ .pipe(sourcemap.write())
414
+
415
+ .pipe(gulp.dest(vuePath.out));
416
+
417
+ }
418
+
419
+ }
420
+
421
+ ```
422
+
423
+
424
+
425
+ ###.localmodules.json
426
+
427
+
428
+
429
+ ```
430
+
431
+ [
432
+
433
+ "./node_modules",
434
+
435
+ "./bower_components",
436
+
437
+ "./client"
438
+
439
+ ]
440
+
441
+ ```
442
+
443
+
444
+
445
+ ###bower.json
446
+
447
+
448
+
449
+ ```
450
+
451
+ {
452
+
453
+ "name": "myapp",
454
+
455
+ "description": "",
456
+
457
+ "main": "",
458
+
459
+ "license": "MIT",
460
+
461
+ "homepage": "",
462
+
463
+ "private": true,
464
+
465
+ "ignore": [
466
+
467
+ "**/.*",
468
+
469
+ "node_modules",
470
+
471
+ "bower_components",
472
+
473
+ "test",
474
+
475
+ "tests"
476
+
477
+ ],
478
+
479
+ "dependencies": {
480
+
481
+ "AdminLTE": "admin-lte#^2.3.11",
482
+
483
+ "summernote": "^0.8.2",
484
+
485
+ "jquery": "^3.1.1"
486
+
487
+ }
488
+
489
+ }
490
+
491
+
492
+
493
+ ```

2

タイトル・文言修正

2017/02/07 15:32

投稿

philomagi
philomagi

スコア267

test CHANGED
@@ -1 +1 @@
1
- ローカルでは成功するのに、Herokubrowserify失敗する
1
+ Herokuへのデプロイ時、browserifyでCan not find module となって失敗する
test CHANGED
@@ -18,6 +18,8 @@
18
18
 
19
19
  ローカルでも試してみたのですが、ローカルでは何の問題もなくビルドが成功してしまうため、手がかりをつかめずにいます。
20
20
 
21
+ リポジトリから再クローンしてからビルドを実行してみたのですが、やはりローカルでは成功してしまいます。
21
22
 
22
23
 
24
+
23
- ソースコード、gulp、あるいはそ他設定ファイをどのよう修正すれば良でしょうか
25
+ Heroku上でみビドが失敗する原因て、何か心当たりが有る方ご教授いただけないでしょうか

1

typo修正

2017/02/06 11:52

投稿

philomagi
philomagi

スコア267

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- Vue.jsを使ったクライアントサイドのアプリケーションを個人的に組んでいるのですが、最近諸々の機能追加をしたソースコードをHerokuへデプロイしようとしたところ、イカのエラーメッセージがgulpから出ました。
1
+ Vue.jsを使ったクライアントサイドのアプリケーションを個人的に組んでいるのですが、最近諸々の機能追加をしたソースコードをHerokuへデプロイしようとしたところ、以下のエラーメッセージがgulpから出ました。
2
2
 
3
3
  ```
4
4