未捕获的 ReferenceError: 要求未在 app.js:3 中定义
Posted
技术标签:
【中文标题】未捕获的 ReferenceError: 要求未在 app.js:3 中定义【英文标题】:Uncaught ReferenceError: require is not defined at app.js:3 【发布时间】:2019-03-13 08:57:10 【问题描述】:在将前端 html 连接到私有区块链以与智能合约交互时遇到问题。
步骤完成如下:
创建了一个智能合约并部署在 pvt 区块链中。npm install -g web3
创建 HTML 文件并与下面的 js 文件链接。
// 示例 app.js 文件代码
var Web3 = require('web3');
var web3 = new Web3();
if (typeof web3 !== 'undefined') alert(" web3.currentProvider :: " + web3.currentProvider);
web3 = new Web3(web3.currentProvider);
else
// set the provider you want from Web3.providers
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
var abi= My-custom-ABI;
var ins=web3.eth.contract(abi);
var instance= ins.at("My-Contract-Address");
var accounts;
var account;
var account2;
【问题讨论】:
您是否有任何类型的构建过程,或者您是否在 HTML 页面中按原样引用了app.js
文件?
与打字稿一起使用,你应该遵循不同的语法,import Web3 = require("web3"); // 注意特殊语法!如有疑问,请复制此行!
并使用 npm install --dev @types/web3.js 安装@types/web3.js
查看此链接了解更多详情 - github.com/ethereum/web3.js/blob/1.0/…
@NagaSaiA 尽管问题(可能错误地)用 TypeScript 标记,但显示的代码是“正常的”ECMAScript/javascript ..(无论如何,var abi= My-custom-ABI;
显然是错误的,但这是另一个问题)
【参考方案1】:
你应该安装它作为你的依赖,试试npm install --save web3
。另外,你需要 webpack 来编译你的 javascript,因为浏览器不理解 require
语法。
【讨论】:
npm install --save web3 已在本地和全局安装它。然后问题仍然存在。但我使用“nodemon”运行了 js 文件并检查了 html 页面。 @Stijin 没有使用任何构建过程来引用 js 文件。 通过使用nodemon,这意味着你在nodejs环境中。因此,您使用节点 js 提供页面。默认情况下,nodejs 支持需要语法,它应该没有任何问题。您能否提供有关您的 package.json 的更多信息?就像你的 npm 脚本一样。另外,尝试制作另一个js文件,并要求它查看问题是否仍然存在。像这样, var js = require('./another.js')以上是关于未捕获的 ReferenceError: 要求未在 app.js:3 中定义的主要内容,如果未能解决你的问题,请参考以下文章
未捕获的 ReferenceError:(函数)未在 HTMLButtonElement.onclick 中定义
未捕获的 ReferenceError:全局未在 eval 中定义
未捕获的 ReferenceError:jQuery 未在 eval 中定义
visual studio typescript“未捕获的ReferenceError:未在...定义导出” [重复]
未捕获的 ReferenceError:ace 未在 Angular 4 中定义
如何修复“未捕获的 ReferenceError:Vue 未在 vuetemplatetest.2.html:19 中定义”