小编axm*_*m__的帖子

汇总:如何要求 json 但不将其包含在包中

我有一个json是需要我的地方文件node的脚本,但我希望有它捆绑的rollup。我希望它被视为“外部”。每次json文件更改时,脚本应该能够在不通过汇总重建包的情况下获取更改。目前,它在捆绑包中是“硬编码”的:

// ./src/index.js
const json = require('../example.json');

Run Code Online (Sandbox Code Playgroud)

./example.json

{
    "exampleValue": "X"
}
Run Code Online (Sandbox Code Playgroud)

返回一个包,其中包括:

{
    "exampleValue": "X"
}
Run Code Online (Sandbox Code Playgroud)

我试图用 排除它rollup-plugin-json,但正如我所料,它抛出:

[!] 错误: Unexpected token (注意你需要 rollup-plugin-json 来导入 JSON 文件)

是否可以将 json 文件标记为外部,就像您可以通过汇总配置文件中的属性externaloutput.paths属性标记外部包一样?

node.js rollupjs

6
推荐指数
1
解决办法
5463
查看次数

如何在 Jest 的同一测试套件中的测试之间清除模块模拟?

我嘲笑了一些 nodejs 模块(例如,其中之一是fs)。我将它们放在一个__mocks__文件夹(同一级别 als node_modules)文件夹中,并且模块模拟工作。但是,无论我使用哪个“测试清除之间”选项,下一个测试都不是“沙盒化”的。这里出了什么问题?

fs模拟模块的一个非常简化的示例是:

// __mocks__/fs.js
module.exports = {
    existsSync: jest.fn()
        .mockReturnValueOnce(1)
        .mockReturnValueOnce(2)
        .mockReturnValueOnce(3) 
}
Run Code Online (Sandbox Code Playgroud)

我只是期望在每次测试中,无论何时init()被调用(见下文),都会existsSync从值 1 重新开始: 的第一个值jest.fn().mockReturnValue()。在测试文件中,我具有以下结构:

// init.test.js
const init = require("../init");
const { existsSync } = require("fs");
jest.mock("fs");

describe("initializes script", () => {
    afterEach(() => {
        // see below!
    });    

    test("it checks for a package.json in current directory", () => {
        init();
    });

    test("it stops script if there's a package.json in dir", …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing node.js jestjs

5
推荐指数
1
解决办法
5663
查看次数

在 npm 脚本中使用 rm -r folder_name/* 删除文件夹的内容会出现“没有这样的文件夹或目录”错误

当我尝试通过运行npm run clean(下面的代码)使用 npm 清理文件夹时,出现以下错误:

rm: 无法删除“lib/*”: 没有那个文件或目录

在我的 package.json 中,我使用了以下脚本:

{
    "scripts": {
        "clean": "rm -r lib/*",
        "show": "ls lib/*"
    }
}
Run Code Online (Sandbox Code Playgroud)

我绝对确定该文件夹存在。我试过在lib路径周围使用单引号。我知道 glob 扩展正在起作用:npm run show效果很好。

我不想像这里建议的那样添加任何依赖项,例如 rimraf 。我也不关心 Windows 支持。我知道我可以使用rm -r lib && mkdir libwhich 有效。我最感兴趣的是为什么rm -r lib/*会出现错误。有人可以帮我吗?

npm 版本: 5.5.1

节点版本: 8.9.3

shell node.js npm

3
推荐指数
2
解决办法
4182
查看次数

为什么 Array.prototype.includes(searchElement) 的参数需要与数组元素的类型相同?

老实说,我不知道我的设置是否有问题,或者这是否是打字稿功能。在以下示例中:

type AllowedChars = 'x' | 'y' | 'z';
const exampleArr: AllowedChars[] = ['x', 'y', 'z'];

function checkKey(e: KeyboardEvent) { 
    if (exampleArr.includes(e.key)) { // <-- here
        // ...
    } 
}
Run Code Online (Sandbox Code Playgroud)

打字稿编译器抱怨Argument of type 'string' is not assignable to parameter of type 'AllowedChars'.但是我在哪里分配?Array.prototype.includes返回一个布尔值(我没有存储)。我可以通过类型断言消除错误,如下所示:

if (exampleArr.includes(e.key as AllowedChars)) {}
Run Code Online (Sandbox Code Playgroud)

但这如何正确,我期待用户输入可能是任何内容。我不明白为什么一个函数(Array.prototype.includes())以检查是否一个元素在数组中发现,有关于输入的期望类型的知识。

我的tsconfig.json(打字稿 v3.1.3):

 {
    "compilerOptions": {
      "target": "esnext",
      "moduleResolution": "node",
      "allowJs": true,
      "noEmit": true,
      "strict": true,
      "isolatedModules": true,
      "esModuleInterop": true,
      "jsx": "preserve",
    }, …
Run Code Online (Sandbox Code Playgroud)

javascript typescript

3
推荐指数
1
解决办法
1155
查看次数

无法从自定义标题切换堆栈导航器中的抽屉

我有StackNavigator一个带有自定义标头的组件DrawerNavigator。自定义标题有一个按钮,应在按下时切换抽屉。我已经添加了 React Navigation 文档中提供的操作,但不起作用。

可以在这里找到有问题的小吃

我究竟做错了什么?谢谢你。

react-native react-navigation

2
推荐指数
1
解决办法
980
查看次数