记搞毕业论文遇到的坑

刚开始接触node.js ,一直不知道怎么用

html中引用了js文件,而js中使用了require(),所以在浏览器运行时,一直报错 require is not definded 或‘XXX’ module is not definded

解决办法:

1.在html里进行原生js引用 ,类似下面这样

<script src="js/web3.min.js"></script>
<script src="js/truffle-contract.js"></script>
<script src="https://unpkg.com/ipfs-api/dist/index.js"></script>

2.用 browserify

nodejs是后端语言,不是在前端引用的,而是做服务器端的功能的

browserify可以让你使用类似于 node 的 require() 的方式来组织浏览器端的Javascript代码,通过预编译让前端Javascript可以直接使用 Node NPM 安装的一些模块

先 用命令行进入你的项目 ,然后在项目中下载browserify

D:\workspace\IndividualPrivacyDapp\JqueryDemo1>npm install browserify

然后 用命令行进入编辑好的js所在的目录

D:\workspace\IndividualPrivacyDapp\JqueryDemo1\src\js>

最后,把要用的js文件转化为在浏览器中可用的

D:\workspace\IndividualPrivacyDapp\JqueryDemo1\src\js> browserify privacyJournal.js -o privacyJournalBundle.js

 最最后,把原来在html中引种的js替换成已经用browserify转化后的

<script src="js/privacyJournalBundle.js"></script>
Browserify通过捆绑所有依赖项,使您在浏览器中需要(模块)。 浏览器没有定义require方法,但是Node.js有。 使用Browserify,您可以编写使用require的代码,就像在Node中使用它一样。 使用npm安装uniq模块。 现在,使用browserify命令将从main.js开始的所有必需模块递归地捆绑到一个名为bundle.js的文件中。 Browserify分析AST的require()调用,以遍历项目的整个依赖关系图。 丢单 tag into your html and you're done! browserify is a tool for compiling node-flavored commonjs modules for the browser. You can use browserify to organize your code and use third-party libraries even if you don't use node itself in any other capacity except for bundling I get this error in the browser when I run my .html fileUncaught ReferenceError: require is not definedMy File_system.html is:window.requestFileSystem problemfunction onInitFs(fs) {console.log(fs);con... 那就让打包出来的代码别有require,换句话说,webpack应该打包出一个适用于ES6环境下的代码。在node环境中引入了一些包,用webpack打包后放在浏览器环境中,浏览器报错。是浏览器环境下的ESModule。ESModule不认识require。是node环境下的CommonJs,而require是node的一个私有的全局方法。 于是,在ES6语法糖default的影响下,require导出的不是xxx这个对象,xxx是作为default的值,被包在一个更大的对象里。default语法糖有很多好处,我们在使用很多包的时候,开箱即用,反正他们都叫default,不必再费心去想作者给他们取了什么名字了。其实很简单,axios这个模块是一个es6模块,是用ESModule的标准写的。的axios是被包裹在default这个属性里面的。即,我们自己把default再命名为axios。对外把变量命名为了default。而换成import, 方法1:改es6模块的后缀名为.mjs,也就是说,只要脚本文件里面使用了import或者export命令,就必须采用.mjs后缀名,nodejs遇到.mjs文件,就认为是es6模块,默认采用严格模式 Applet 参考并使用了 核心部分,是一个体积极小且极具表现力的中间件框架。 它没有捆绑任何中间件,也不依赖第三方包,可以运行在Node.js环境下和浏览器。 它的中间件之间按照编码顺序在栈内依次执行,允许我们执行操作并向下传递请求(downstream),之后过滤并逆序返回响应(upstream)。 理论上,符合下面任一条件即可: 在 Node.js 环境下,Applet 依赖 node v7.6.0 或 ES2015及更高版本和 async 方法支持; 在浏览器则需要通过其它工具转码 ,或者使用 。 推荐使用转码工具(如:、)配合打包工具(如:、、)转换 async/await。 示例(Example) 必修的 hello world 应用 const Applet = require('applet'); const app = new Ap 在非专业前开发的工作中(比如使用vuejs开发),免不了要进行模块化,js的加载使用require.js就可以了,但是对于.css文件的加载需要使用插件,在试用了github上提供的require.js后发现不太好用(报错,还得改人家代码),于是自己写了一个简单一点儿的,用着还不错,跟github上的没多大区别(主要针对于浏览器的页面开发),接口一致,而且可以(在非require.js模式下)单独使用。 PS: 针对vuejs需要的模板也可以转为js使用(把模板转为require.js需要的模块即可); 今天在应用 node.js 的时候突然报错了,之前一直是好的呢,费了九牛二虎之力终于搞明白了。 原来是node在升级之后,对 require 的使用方法发生了改变。从node.js 14版及以上版本中,require作为COMMONJS的一个命令已不再直接支持使用,所以我们需要导入createRequire命令才可以。 所以在使用 require 的时候只需要加入以下代码就可以了: import { createRequire } from 'module'; const require = create react项目使用require(“fs”)报错:找不到fs文件 原因:fs是node提供的模块,只能在node环境中才能执行相关方法,如果你的react是要运行在浏览器的,则不能直接调用fs模块,因为浏览器并没有提供fs相关api 两种解决方法: 1、将以下配置添加到webpack.config.js node: { fs: "empty" 2、将以下配置添加到package.json "browser": { "fs": false