Javascript- ReferenceError: требование не определено

Я пытаюсь связать и запустить проект TypeScript с помощью Webpack. Для одного из файлов TypeScript требуется зависимость от внешнего узла. Webpack связывает файл без проблем, но когда я пытаюсь запустить его в браузере, я получаю следующую ошибку.

Javascript- ReferenceError: требование не определено

webpack.config.js

const path = require('path');
const nodeExternals = require('webpack-node-externals');

module.exports = {
  entry: './src/index.ts',
  resolve: {
    extensions: [
      '.js',
      '.jsx',
      '.json',
      '.ts',
      '.tsx'
    ]
  },
   externals: [nodeExternals()],
  output: {
    libraryTarget: 'commonjs',
    path: path.join(__dirname, '.webpack'),
    filename: '[name].js',
  },
  target: 'web',
  module: {
    loaders: [
      { test: /\.ts(x?)$/, loader: 'ts-loader' },
    ],
  },

};

Зависимость от внешнего узлаaws-iot-устройство-SDK

Может кто-то помочь мне с этим?

Обновление: обнаружено, что следующая строка в файле TypeScript вызывает проблему. есть ли обходной путь для этого?

const client = new IoTClient(true, IoTClientOptions);

Почему вы устанавливаете output.libraryTarget на commonjs, вы пытались установить его на libraryTarget: "umd"?

Littlee 23.03.2018 08:20

У меня нет четкого представления о параметре libraryTarget, и я пробовал использовать указанный вами вариант, но ошибка остается той же.

gayashanbc 23.03.2018 08:25

Что внутри ./src/index.ts?

Littlee 23.03.2018 08:32

Следующая строка: const client = new IoTClient (true, IoTClientOptions);

gayashanbc 23.03.2018 09:40

Не могли бы вы предоставить больше контента в index.ts, я понятия не имею, что такое IoTClient и IoTClientOptions.

Littlee 23.03.2018 10:08

Смогла найти решение, добавлю сюда.

gayashanbc 28.03.2018 09:54
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
6
1 210
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Как вы используете

require('path');

вам нужно скачать RequireJS

Здесь

RequireJS - это загрузчик файлов и модулей JavaScript.

или добавьте в свой проект Добавить http://requirejs.org/docs/release/2.2.0/minified/require.js

Ответ принят как подходящий

Следующая конфигурация Webpack решила мою проблему.

const path = require('path');

module.exports = {
  entry: {
    chatUI: './src/chat-ui.ts',
    chatLogic: './src/chat-logic.ts',
  },
  resolve: {
    extensions: [
      '.js',
      '.jsx',
      '.json',
      '.ts',
      '.tsx'
    ]
  },
  output: {
    path: path.join(__dirname, '.webpack'),
    filename: '[name].js',
  },
  node: {
    fs: 'empty',
    tls: 'empty'
  },
  target: 'web',
  module: {
    loaders: [
      {
        test: /\.tsx?$/,
        loader: 'awesome-typescript-loader'
      }
    ],
  },

};

Другие вопросы по теме