Typescript中引入base64 提示 @ types / js-base64 / index.d.ts'不是模块

安装:

npm install --save @types/js-base64

 引入:

import { Base64 } from '@types/js-base64';

然后,开始报错:js-base64/index.d.ts' is not a module   

那么TYPScript到底应该如何引入第三方包呢?   

参考一下这篇文章:
https://segmentfault.com/a/1190000008605017


解决方法一:

1、使用Typings安装:

//1、安装typings
npm install -g typings

//2、使用typings 查找资源,支持模糊查找 
typings search base64

//3、安装ts库 
typings install base-64 --save

//4、安装js库,注意与ts库名字一致
npm install base-64 --save

2、安装完成后,开始使用:

import * as Base64Tool from 'base-64';

let res1 = "hello,mengmeng儿~";
let ret = Base64Tool.encode(encodeURIComponent(res1));

console.log("ret: ",ret);
console.log(decodeURIComponent(Base64Tool.decode(ret)));

OK,搞定!

解决办法二:

@types的使用(推荐):

在项目目录下运行:

npm install –-save @types/库名 

实测下:

npm install --save @types/pako

npm install --save pako

安装OK!

package.json:


PS:为什么要用 encodeURIComponent 、decodeURIComponent 进行编码?

解释:当字符串中含有中文时,base64转码时会提示:

The string to be encoded contains characters outside of the Latin1 range 。

 

江湖人传的最佳做法:

function utf8_to_b64(str) {
    return window.btoa(unescape(encodeURIComponent(str)));
}

function b64_to_utf8(str) {
    return decodeURIComponent(escape(window.atob(str)));
}

然后查了一下unescape:

既然官方这么建议了,我已不再尝试,通过测试用  encodeURIComponent 即OK。

作为一名曾经的phper,补充一句:

decodeURIComponent( )  encodeURIComponent( )   对应php 中的  urldecode( )  、 urlencode( )


总结:

1、新手入门,多遇到一些稀奇古怪的问题,要淡然看待,解决的过程即为成长;

2、在新手入门时,不要轻信别人的教程文档,原因两点,一、作者和你技术栈区别大时,重点步骤可能不同;二、作者可能犯错,比如缺少某个步骤,凑巧其他途径已弥补的情况;遇到这种情况,只能多尝试,多参考更多的资料;

3、不要当新手太久,新手依赖死规矩,且新手容易把概念理解错,思维受限,知识背景受限,赶紧变身!像专家那样用感觉还能精准的解决问题吧!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据你提供的`package.json`文件,可以看出你的项目依赖关系如下: 开发依赖项: - `@types/jest`: 用于为Jest测试框架提供TypeScript类型定义。 - `@types/jquery`: 用于为jQuery库提供TypeScript类型定义。 - `@types/source-map`: 用于为source-map库提供TypeScript类型定义。 - `@typescript-eslint/eslint-plugin`: 用于在ESLint使用TypeScript规则的插件。 - `@typescript-eslint/parser`: 用于解析TypeScript代码并生成抽象语法树(AST),供ESLint使用。 - `awesome-typescript-loader`: 用于Webpack加载TypeScript文件。 - `clean-webpack-plugin`: 用于在每次构建之前清理输出目录。 - `eslint`: 用于进行代码规范检查。 - `fork-ts-checker-webpack-plugin`: 用于在Webpack构建过程进行TypeScript类型检查。 - `html-webpack-plugin`: 用于生成HTML文件并自动引入打包后的资源。 - `jest`: 用于进行单元测试。 - `ts-jest`: 用于在Jest解析和运行TypeScript代码。 - `ts-loader`: 用于Webpack加载TypeScript文件。 - `typescript`: TypeScript编译器。 - `webpack`: 用于打包项目资源。 - `webpack-cli`: 用于在命令行运行Webpack命令。 - `webpack-dev-server`: 用于在开发过程提供一个开发服务器,支持热更新和自动刷新。 - `webpack-merge`: 用于合并多个Webpack配置文件。 生产依赖项: - `jquery`: jQuery库。 - `moment`: 日期时间操作库。 根据你提供的信息,你的`npm start`命令应该是可以正常工作的。但是,记得在运行之前,先根据之前的回答的建议,升级Node.js版本到npm支持的版本。 如果你遇到了其他问题,请提供错误信息或详细描述你的操作步骤,以便更好地帮助你解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值