未捕获ReferenceError:未定义说

时间:2019-12-19 09:13:32

标签: javascript node.js bundle browserify liquid

我尝试将function hello()从hello.js导入到页面sign_up.liquid。 我将main.js浏览器化为具有bundle.js(browserify ./public/js/main.js -o ./public/js/bundle.js),但是却出现了Uncaught ReferenceError。为什么我不能在sign_up.liquid中使用我的function hello()

enter image description here

-hello.js

var hello = function(){
    console.log('I said Hello')
}

module.exports = hello;

-main.js

const say = require('./hello.js')

-bundle.js

(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
var hello = function(){
    console.log('I said Hello')
}

module.exports = hello;
},{}],2:[function(require,module,exports){
const say = require('./hello.js')

},{"./hello.js":1}]},{},[2]);

-sign_up.liquid

[...]
<script src="../js/bundle.js"></script>
<script>
    say.hello();
<script>

1 个答案:

答案 0 :(得分:1)

您的问题是因为Hello是您的导出,所以您的导入hello()变成了说。

如果您仅使用

say() 

您应该获取hello()函数的值。

或者,您可以使用解构方法为导出指定别名。

类似这样的东西:

const { hello: say } = require('./hello.js');

有关Destructuring here的更多信息 具体来说,您可能要查看以下部分:分配新变量名,大​​约位于页面的一半。