Скомпилируйте сгенерированный басню код с помощью веб-пакета

Мой test.fsx выглядит так:

module Test
#r "./node_modules/fable-core/Fable.Core.dll"
open Fable.Core
open Fable.Import.Browser
type ItemCompletedData    = {itemsCompleted:int}
type AddData              = {text:string}
[<Pojo>]
type ActionData =
  | ItemCompleted of ItemCompletedData
  | Add of AddData
let test = (Add {text="hello world"})
console.log(test)

Скомпилируйте это с:

node node_modules/fable-compiler/index.js --projFile test.fsx -o ./js/

webpack.config.js выглядит так:

var path = require("path");
module.exports = {
  entry: {
    main: ["./js/test.js"]
  },
  output: {
    path: path.resolve(__dirname, "build"),
    publicPath: ".",
    filename: "[name].js"
  }
  ,devServer: {
    contentBase: path.join(__dirname, "./"),
    compress: true,
    port: 9000
  }
};

Запускаем веб-пакет с помощью следующей команды:

node node_modules/webpack/bin/webpack.js --devtool source-map

Это даст предупреждение:

ПРЕДУПРЕЖДЕНИЕ в./~/.0.7.26@fable-core/umd/Symbol.js 3:24-31 Критическая зависимость: функция require используется таким образом, что зависимости не могут быть извлечены статически

ПРЕДУПРЕЖДЕНИЕ в./~/.0.7.26@fable-core/umd/Util.js 3:24-31 Критическая зависимость: функция require используется таким образом, что зависимости не могут быть извлечены статически

При открытии HTML-файла, который использует main.js, я получаю сообщение об ошибке в консоли:

Symbol.js:3 Uncaught Error: Cannot find module "."

Symbol.js происходит от fable-core/umd/Symbol (в скрипте, созданном басней). Когда я изменяю это вручную на: fable-core/Symbol (для всех зависимостей ядра fable), тогда я могу скомпилировать webpack без предупреждений и не получать ошибок на странице.

Как я могу предотвратить эту ошибку, не изменяя вручную вывод басни?

1 ответ

Во время написания этого вопроса я шел по шагам и пытался добавить -m es2015 к команде компилятора басни.

Это было решение.

Теперь, когда этот fable-код может загружаться, мне нужно только решить проблему, создаваемую бунтом, генерируемым js-кодом. Мне нужно загрузить теги после установки riot.mixin, чтобы я загружал их в вложенные операторы Requiejs UMD (возможно, это вызывает ошибку).

require riot
  ... require tag1 tag2 ...
Другие вопросы по тегам