nonce: Date.parse(new Date()), ts 中类型报错
时间: 2023-11-17 20:56:14 浏览: 100
这个问题可能是因为 `Date.parse(new Date())` 返回的是一个数字类型,而你想要的是一个字符串类型作为 `nonce`。你可以尝试将其转换为字符串类型,例如使用 `Date.parse(new Date()).toString()` 或 `String(Date.parse(new Date()))`。这样就可以解决类型报错的问题了。
相关问题
module.exports = { context: path.resolve(__dirname, '../'), entry: { app: './src/main.js' }, output: { nonce: nonce, path: config.build.assetsRoot, filename: '[name].js', publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath, }
根据你提供的代码,似乎是在 Webpack 配置文件中定义了 `nonce` 属性。如果你使用了旧版本的 Webpack,可能会导致此错误。`nonce` 属性是在 Webpack 5 中引入的,如果你使用的是旧版本的 Webpack,该属性是不支持的。
解决此问题的一种方法是升级到 Webpack 5。另一种方法是将 `nonce` 属性从输出配置中移除,因为它在 Webpack 4 及以下版本中是不必要的。如果你需要使用 `nonce` 属性来实现 Content Security Policy (CSP),你可以在 HTML 模板中添加 `nonce` 属性,而不是在 Webpack 配置文件中添加。
你可以尝试修改输出配置,移除 `nonce` 属性,例如:
```
module.exports = {
context: path.resolve(__dirname, '../'),
entry: {
app: './src/main.js'
},
output: {
path: config.build.assetsRoot,
filename: '[name].js',
publicPath: process.env.NODE_ENV === 'production'
? config.build.assetsPublicPath
: config.dev.assetsPublicPath
}
}
```
希望这可以帮助你解决问题。
优化代码def get_gmt_time(): return int(round(time.time() * 1000)) def get_sign2(data): timestamp = str(get_gmt_time()) nonce = str(random.randint(1, 2 ** 30)) secret_salt = '8k&^$Hsk1?kkcj12^99K1ia' if data: data.update({"nonce": nonce, "timestamp": timestamp}) else: data = {"nonce": nonce, "timestamp": timestamp} sorted_items = sorted([(k, v) for k, v in data.items() if v]) params_str = '&'.join([f'{k}={v}' for k, v in sorted_items]) params_str += f'&{secret_salt}' sign = hashlib.sha256(params_str.encode()).hexdigest() headers_sign = {"timestamp": timestamp, "nonce": nonce, "sign": sign} return headers_sign
以下是对代码的优化:
```
import time
import random
import hashlib
SECRET_SALT = '8k&^$Hsk1?kkcj12^99K1ia'
def get_gmt_time():
return int(round(time.time() * 1000))
def get_sign2(data):
nonce = str(random.randint(1, 2 ** 30))
timestamp = str(get_gmt_time())
headers = {"nonce": nonce, "timestamp": timestamp}
if data:
headers.update(data)
sorted_items = sorted([(k, v) for k, v in headers.items() if v])
params_str = '&'.join([f'{k}={v}' for k, v in sorted_items])
params_str += f'&{SECRET_SALT}'
sign = hashlib.sha256(params_str.encode()).hexdigest()
headers_sign = {"timestamp": timestamp, "nonce": nonce, "sign": sign}
return headers_sign
```
1. 将 `SECRET_SALT` 定义为全局变量,避免多次计算。
2. 将 `timestamp` 和 `nonce` 的赋值提前,避免重复计算。
3. 将 `headers` 的赋值改为使用 `update()` 方法,使代码更简洁。
4. 将 `headers` 和 `data` 的合并放在 `if` 语句之后,避免重复合并。
5. 将 `headers_sign` 直接返回,避免多余的变量赋值。
阅读全文