【问题标题】:what's the difference between src/**/* and 'src/**/*'src/**/* 和 'src/**/*' 有什么区别
【发布时间】:2021-06-08 13:23:27
【问题描述】:

我想用nodemon开始我的项目

"scripts": {
  "start": "tsc && node build/index.js",
  "watch-server1": "nodemon --watch src/**/* -e ts,tsx --exec ts-node ./src/index.ts",
  "watch-server2": "nodemon --watch 'src/**/*' -e ts,tsx --exec 'ts-node' ./src/index.ts"
},

但是当我使用watch-server1:

(node:6830) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
/Users/leonsux/Desktop/Code/home/src/router/index.js:5
export default router;
^^^^^^

SyntaxError: Unexpected token 'export'
    at wrapSafe (internal/modules/cjs/loader.js:1167:16)
    at Module._compile (internal/modules/cjs/loader.js:1215:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1272:10)
    at Module.load (internal/modules/cjs/loader.js:1100:32)
    at Function.Module._load (internal/modules/cjs/loader.js:962:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
    at main (/Users/leonsux/Desktop/Code/home/node_modules/ts-node/src/bin.ts:198:14)
    at Object.<anonymous> (/Users/leonsux/Desktop/Code/home/node_modules/ts-node/src/bin.ts:288:3)
    at Module._compile (internal/modules/cjs/loader.js:1251:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1272:10)
[nodemon] app crashed - waiting for file changes before starting...

当我使用watch-server2时,效果很好

那么,src/**/* 和 'src/**/*' 有什么区别

【问题讨论】:

    标签: node.js typescript nodemon


    【解决方案1】:

    在将参数传递给 nodemon 之前,您的 shell(例如 bash)会扩展像 * 这样的未加引号的 shell 字符。

    将它们用单引号括起来可以防止它们被 shell 扩展,因此 nodemon 将作为参数传递文字字符串 src/**/*。 (它可以为所欲为——大概是扩展通配符本身。)

    这有很大不同的一个例子:

    scp 'remoteserver:*.txt' .
    

    对比:

    scp remoteserver:*.txt .
    

    引用* 允许 scp 打开与远程服务器的安全连接并查看其上存在哪些文件。

    如果 * 被您的本地 shell 扩展,它只会在您的本地计算机上查找名称为“remoteserver:foo.txt”的文件,并且可能找不到。

    【讨论】:

    • +1。请注意,在许多 shell 中,如果没有找到匹配项,文件团就会被单独留下;所以像scp remoteserver:*.txt . 这样的东西可能会起作用。 . .直到没有。 (这是 POSIX 指定的行为,也是 Bash 在默认设置下的行为。)
    • @ruakh 我没有意识到这一点。我主要使用 tcsh,如果无法扩展 fileglob,它只会显示“命令:不匹配”。
    猜你喜欢
    • 1970-01-01
    • 2016-03-27
    • 2013-02-25
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 2013-11-13
    • 2011-02-10
    • 2012-06-30
    相关资源
    最近更新 更多