Purescript生成输出在浏览器中生成requirejs错误
当我使用Purescript生成输出在浏览器中生成requirejs错误,requirejs,purescript,Requirejs,Purescript,当我使用palp build-O-t html/main.js然后palp build-O-I test-m test.main-t html/testmain.js(即building main和test)时,我得到两个不同的js输出。在前一种情况下,格式为 // Generated by psc-bundle 0.8.2.0 var PS = { }; (function(exports) { // Generated by psc version 0.8.2.0 "use stri
palp build-O-t html/main.js
然后palp build-O-I test-m test.main-t html/testmain.js
(即building main和test)时,我得到两个不同的js输出。在前一种情况下,格式为
// Generated by psc-bundle 0.8.2.0
var PS = { };
(function(exports) {
// Generated by psc version 0.8.2.0
"use strict";
var Prelude = require("../Prelude");
var Control_Monad_Eff = require("../Control.Monad.Eff");
exports["main"] = main;
})(PS["Main"] = PS["Main"] || {});
PS["Main"].main();
请注意要求。在后一种情况下,要求根本不到位
// Generated by psc-bundle 0.8.2.0
var PS = { };
(function(exports) {
/* global exports */
"use strict";
exports.concatArray = function (xs) {
return function (ys) {
return xs.concat(ys);
};
};
exports.showNumberImpl = function (n) {
/* jshint bitwise: false */
return n === (n | 0) ? n + ".0" : n.toString();
};
})(PS["Prelude"] = PS["Prelude"] || {});
(function(exports) {
// Generated by psc version 0.8.2.0
"use strict";
var $foreign = PS["Prelude"];
var Semigroupoid = function (compose) {
this.compose = compose;
};
这两个例子都很简短,但重点是第一次使用require,而第二次不使用require。
问题是,由于此错误,我无法在浏览器中使用require运行版本
ReferenceError:未定义require
当我在页面中包含require.js时,我遇到了这个错误
错误:尚未为上下文加载模块名“./前奏曲”:。使用require([])
因此,我的问题是,如何在浏览器中运行第一个案例 您可能需要使用
--browserify
选项为浏览器构建第一个案例 我的猜测是,这来自于使用不同的——require path
选项运行构建;一次使用旧的默认值,即空字符串,一次使用。/
。这将导致psc bundle
没有意识到在第一种情况下需要正确地包括Prelude
和Control.Monad.Eff
psc bundle
应该用对其他模块的引用替换那些require
调用,以便代码在浏览器中工作
有几种不同的方法可以实现这一点,并且编译器现在已经以一种应该使再次发生这种情况的概率更低的方式进行了更新,所以我不会花太多时间担心这到底是如何发生的
如果以上这些对你来说都没有任何意义,不要担心;我认为您只需执行以下操作即可解决此问题:
- 更新至最新版本的
(0.8.3将psc
默认值更改为--require path
,因此0.8.3之后的任何版本都可以,但在大多数情况下,您都需要最新版本)。/
- 删除您的
目录输出
- 重新编译所有内容
-m
标志,第一个示例没有入口点。。。不过我可能错了。也许值得将您的palp
和psc
更新为最新版本,最新palp
的--help
中似乎没有browserify
,所以我的建议可能是完全错误的!如果没有指定入口点,默认情况下它应该是Main。然而,我尝试了以下方法:palpbuild-O-Main-thtml/Main.js,但没有任何帮助。我升级到了0.8.4,它工作起来非常有魅力。非常感谢听到这个消息真是太好了