如何创建npm init脚本?解决Windows下JScript执行Node脚本问题
问题:
npm init <package> 用Microsoft JScript而非Node执行创建脚本 根据npm文档,npm init <package> 命令会对应调用名为create-<package>的包来预配置新项目。我创建了create-my-app包,目录结构如下:
- 根目录
- client-package
- create-my-app
- index.js
- package.json
已经在client-package目录中执行npm link create-my-app完成包关联,但运行npm init my-app时,npm虽然定位到了create-my-app中的index.js,却用Microsoft JScript执行该脚本,而非Node.js,请问如何修正这个问题?
解决方法
给脚本添加Shebang并配置
package.json的bin字段
Windows系统会通过脚本开头的Shebang识别执行器,同时npm需要通过bin字段明确入口脚本:- 在
create-my-app/index.js的第一行添加Shebang:#!/usr/bin/env node // 你的脚本内容 - 在
create-my-app/package.json中添加bin配置,指定入口脚本:{ "name": "create-my-app", "version": "1.0.0", "bin": "./index.js" }
- 在
重新执行
npm link生效配置
在create-my-app目录下重新运行npm link,确保新的package.json配置被npm识别。修复Windows下
.js文件的默认关联
如果上述操作无效,检查Windows是否将.js文件默认关联到JScript:- 打开命令提示符,执行
assoc .js,确认输出为.js=JSFile - 执行
ftype JSFile,查看关联的执行程序。如果显示为JScript相关路径,执行以下命令修改为Node.js(替换为你的Node实际安装路径):ftype JSFile="C:\Program Files\nodejs\node.exe" "%1" %*
- 打开命令提示符,执行
内容的提问来源于stack exchange,提问作者treeno
相关产品推荐
相关产品推荐

