Скомпилируйте сгенерированный басню код с помощью веб-пакета
Мой 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 ...