所以,我正在用Node/Express+jade组合写一个应用程序。
我有client.js
,它加载在客户端上。在该文件中,我有从其他JavaScript文件调用函数的代码。我试图用
var m = require('./messages');
为了加载messages.js
的内容(就像我在服务器端所做的那样),以及稍后从该文件调用函数。但是,require
没有在客户端定义,它会抛出一个形式为Uncapted ReferenceError的错误:require is not defined
。
这些其他的JS文件也在运行时加载在客户端,因为我把链接放在网页的头上。因此客户端知道从这些其他文件导出的所有函数。
如何从打开服务器套接字的主client.JS
文件中的这些其他JS文件(如messages.JS
)调用这些函数?
这是因为require()
在浏览器/客户端JavaScript中不存在。
现在,您必须对客户端JavaScript脚本管理做出一些选择。
您有三个选项:
标记。CommonJS客户端-实现包括:
(其中大多数都需要在部署之前执行构建步骤)
您可以阅读更多关于我对Browserify vs(已弃用)组件的比较。
AMD实现包括:
注意,在你寻找选择哪一个去,你会读到鲍尔。Bower只针对包依赖项,不支持CommonJS和AMD等模块定义。
希望这能帮上点忙。
我来自于一个电子环境,在这里我需要一个渲染器进程和主进程之间的IPC通信。呈现器进程位于脚本标记之间的HTML文件中,并生成相同的错误。这条线
const {ipcRenderer} = require('electron')
引发未捕获的ReferenceError:require未定义
当浏览器窗口(嵌入此HTML文件的地方)最初在主进程中创建时,我可以通过将节点集成指定为true来解决这一问题。
function createAddItemWindow() {
//Create new window
addItemWindown = new BrowserWindow({
width: 300,
height: 200,
title: 'Add Item',
//The lines below solved the issue
webPreferences: {
nodeIntegration: true
}
})}
帮我解决了问题。在此提出了解决方案。希望这能帮到别人。干杯。
ES6:在html中使用属性type=“module”
包含主js文件(浏览器支持):
<script type="module" src="script.js"></script>
并且在script.js
文件中包含另一个类似于以下内容的文件:
import { hello } from './module.js';
...
// alert(hello());
在包含的文件(module.js
)中,必须导出要导入的函数/类
export function hello() {
return "Hello World";
}
这里就是一个例子。此处提供更多信息