在我的node.js(带有打字稿)项目中,我尝试使用 crypto-random-string 包来生成随机字符串值。
我使用pnpm安装了它:
pnpm i crypto-random-string
在我的生产代码中,我将其用作:
import cryptoRandomString from 'crypto-random-string';
const cryptoStr = () => cryptoRandomString({ length: 10, type: 'ascii-printable' });
我有一个笑话代码来对其进行单元测试,但是当运行笑话时,它会抱怨:
my-project/node_modules/.pnpm/[email protected]/node_modules/crypto-random-string/index.js:3
import {promisify} from 'node:util';
^^^^^^
SyntaxError: Cannot use import statement outside a module
> 1 | import cryptoRandomString from 'crypto-random-string';
我的
jest.config.ts
:
export default {
jest: {
preset: 'ts-jest',
testEnvironment: 'node',
transform: {
'node_modules/variables/.+\\.(j|t)sx?$': 'ts-jest',
},
transformIgnorePatterns: ['node_modules/(?!variables/.*)'],
},
};
我尝试了here的解决方案,但对我没有帮助。
如何解决这个问题?
改编here的答案在我的
jest.config.js
中对我有用。具体来说:
module.exports = {
transformIgnorePatterns: ['/node_modules\/(?!crypto-random-string)(.*)']
}
对于那些仍然受此困扰的人 - 我发现这个答案有帮助:https://stackoverflow.com/a/64223627/1282432
使用 babel for Jest + Babel.config.js + 转换 + transformIgnorePatterns 来忽略加密随机字符串
这些都是需要的
你需要使用babel。 在服务器package.json中:
"devDependencies": {
"@babel/preset-env": "^7.16.11"
"babel-jest": "^27.5.1",
"jest": "^27.5.1",
},
"babel": {
"presets": [
[
"@babel/preset-env",
{
"targets": {
"node": "current"
}
}
]
]
}
还有客户端package.json:
"devDependencies": {
"@babel/preset-env": "^7.16.11",
"@babel/preset-react": "^7.16.7",
"jest": "^27.5.1",
"jest-babel": "^1.0.1",
"parcel": "^2.3.2"
},
"babel": {
"presets": [
"@babel/preset-react",
[
"@babel/preset-env",
{
"targets": {
"node": "current"
}
}
]
]
}
如果不行的话,能否提供一下测试文件?