Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Module not found but still works

オープン
#81 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
30/100
issue の種類
バグ
明瞭さ
説明が足りない
活発さ
停滞
技術スタック
javascript

調査の方向性

まず、投稿された gulp コンパイルスクリプト、Browserify、factor-bundle、および2つのページエントリを使って生成されたバンドルを再現します。jquery require 周辺の生成されたモジュールマッピングを調べ、homepage と product のバンドルを比較します。完了の条件は、homepage が不足しているモジュールを報告しなくなり、両方のページが引き続き動作することです。

索引モデルが issue の本文から書いたものです。

説明

Hi,

I've got a strange behavior with my scripts.
I have 2 JS files : home.js and product.js for the concerned page.
Both require the common.js file, it works fine on the product page but on the homepage I have this error :
"Uncaught Error: Cannot find module '51'"

More about this error :

var _jquery = require('jquery');

var _jquery2 = _interopRequireDefault(_jquery);

var _common = require('../common/common.js');

var _common2 = _interopRequireDefault(_common);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : {'default':obj}; }

(0, _jquery2['default'])(function () {
  _common2['default'].init();
});

},{"../common/common.js":88,"jquery":51}]},{},[89]);

But, the JS still works. When I look further on the console, it's apparently the first module I have imported in the home.js script (jquery).

Here is my compilation script:

'use strict';

const __DEV__     = process.argv.indexOf('--dev') > -1;

const fs         = require('fs');
const path       = require('path');
const gulp       = require('gulp');
const notify     = require('gulp-notify');
const plumber    = require('gulp-plumber');
const browserify = require('browserify');
const babelify   = require('babelify');
const watchify   = require('watchify');
const replace    = require('gulp-replace');
const gutil      = require('gulp-util');

module.exports = function(config, prefix) {
  return function() {

    const folders = fs.readdirSync('./src/pages');
    const files   = folders.reduce((acc, folder) => {
      if (folder != 'common') {
        acc.entries.push(path.join(__dirname, `../src/pages/${folder}/${folder}.js`));
        acc.outputs.push(path.join(__dirname, `../dist/assets/scripts/${folder}.bundle.js`));
      }

      return acc;
    }, { entries: [], outputs: [] });


    const stream = browserify({ 
        entries: files.entries,
        cache: {},
        packageCache: {},
      })
      .transform('babelify', { presets: ['es2015'] })
      .plugin(watchify)
      .plugin('factor-bundle', {
        outputs: files.outputs,
      })

    stream.on('update', bundle);

    return bundle();

    function bundle() {
      return stream
        .bundle()
        .on('error', e => {
          gutil.log(gutil.colors.red('Bundle error:', e.message));
        })
        .pipe(fs.createWriteStream(`${config.distOutputPath}/common.bundle.js`))
        .on('finish', () => {
          return gulp.src(config.distPath)
            .pipe(replace(/var-/g, prefix + '-'))
            .pipe(replace(/\.default(?=\.|\;|\)|\,|\(|\s)/g,"['default']"))
            .pipe(replace(/\{ default: obj }/g,"{'default':obj}"))
            .pipe(gulp.dest(config.distOutputPath))
            .pipe(notify('Scripts task end'));
        });
    }
  };
}

I work on Windows 7 with Node.js v4.2.

主要言語
JavaScript
スター
397
フォーク
24
PR マージ指標
30日以内にマージされた PR はありません

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

browserify/factor-bundle のほかの issue

browserify/factor-bundle の issue をすべて見る

似ている issue

JavaScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。