Почему не работает пример «export-loader» в документации Webpack? - PullRequest
0 голосов
/ 11 марта 2019

Webpack предоставляет приведенный ниже пример в документации shimming . В части global export этой страницы приведен следующий пример.

webpack.config.js

module.exports = {
    module: {
        rules: [
            {
                test: require.resolve('globals.js'),
                use: exports-loader?file,parse=helpers.parse
            }
        ]
    }
}

. / SRC / globals.js

var file = 'blah.txt';
var helpers = {
    test: function() { console.log('test something'); },
    parse: function() { console.log('parse something'); }
};

Но когда я пытаюсь построить, я получаю:

ERROR in ./webpack.config.js
Module not found: Error: Can't resolve 'globals.js' in '/workspace/my-app'

Почему globals.js не разрешается, и почему пример в их документации предполагает, что так и будет? Я что-то пропустил? Спасибо.

1 Ответ

0 голосов
/ 12 марта 2019

Получение этого для работы с глобальной exports-loader конфигурацией

У меня это работает со следующей настройкой:

src / deps.js // этот файлпросто объявите глобальную file переменную

const file = 'this is the file';

src / app.js // точку входа в пакет веб-пакета.Это import deps.js (даже если deps.js не имеет оператора export, спасибо export-loader):

import file from './deps.js'
console.log(file);

webpack.config.js // файл конфигурации webpack

module.exports = {
  entry: __dirname + '/src/app.js',
  mode: 'development',
  module: {
    rules: [
      {
        test: /deps.js/,
        use: 'exports-loader?file',
      }
    ]
  }
}

package.json // чтобы мы могли запускать webpack локально для проекта

{
  "name": "exports-loader-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "webpack": "node_modules/webpack/bin/webpack.js"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "exports-loader": "^0.7.0",
    "webpack": "^4.29.6",
    "webpack-cli": "^3.2.3"
  }
}

С помощью этой настройки, предполагая webpack.config.js, package.json и src/ находятся в корне проекта, выполните:

$ npm run webpack

Чтобы связать сценарии, затем:

$ node dist/main.js чтобы убедиться, что переменная file загружается (загрузка в браузере будет делать то же самое).

Получение этого для работы с import определенной конфигурацией.

( * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *]] * * * * 10.;*:

use: 'exports-loader',

И затем укажите переменные для переноса в предложении export в каждом операторе import:

import file from 'exports-loader?file!./deps.js'

Почему не работает синтаксис require.resolve()?

Я действительно не знаю.Насколько я знаю, предложение test ожидает регулярное выражение (поэтому на самом деле оно называется test из-за метода регулярных выражений test в javascript), и я не привык к другим допустимым синтаксисам.Я вижу, что в вашем фрагменте:

module.exports = {
    module: {
        rules: [
            {
                test: require.resolve('globals.js'),
                use: exports-loader?file,parse=helpers.parse
            }
        ]
    }
}

Значение use не имеет строковых кавычек.Интересно, если это нарушает конфигурацию, и тогда вы получаете ошибочную ошибку, я не знаю.Я действительно считаю, что вы просто не вставляли кавычки при копировании и вставке в переполнение стека.

...